摘要:它將返回目標(biāo)對(duì)象。封閉對(duì)象方法判斷一個(gè)對(duì)象是否被密封。為源對(duì)象為修改的屬性名或設(shè)置,同上方法返回一個(gè)給定對(duì)象自身可枚舉屬性的鍵值對(duì)數(shù)組方法返回指定對(duì)象上一個(gè)自有屬性對(duì)應(yīng)的屬性描述符方法判斷兩個(gè)值是否是相同的值。
對(duì)象作為引用類型,工作中免不了復(fù)制對(duì)象,下面來看看克隆的方法
const obj1 = { a: 1, b: 2, title: { name: "張三" } }; const obj2 = Object.assign({}, obj1); console.log(obj2); //{ a: 1, b: 2 ,title:{name:"張三"}} obj1.title.name = "李四"; //修改obj1的值,再來打印看下obj2的值 console.log(obj2) //{ a: 1, b: 2,title:{name:"李四"} } console.log(obj1) //{ a: 1, b: 2,title:{name:"李四"} }
var cloneObj = JSON.parse(JSON.stringify(obj));
let freeze1 = { a: "1" }; let freeze2 = Object.freeze(freeze1); freeze2.a = 2; console.log(freeze2) //1
console.log(Object.isFrozen(freeze2)) //true
let seal = {}; Object.seal(seal); //封閉對(duì)象
console.log(Object.isSealed({}), "------"); //false console.log(Object.isSealed(seal), "------"); //true
for ...in Object.keys() JSON.stringify()
先看一個(gè)例子,創(chuàng)建一個(gè)對(duì)象
function Person() { this.name = "KEY" } Person.prototype = { constructr: Person, jos: "student" }; var key = new Person(); Object.defineProperty(key, "sex", { value: "female" }) console.log(key.sex, "------") //female ------ 直接訪問可以獲取的key.sex for (var pro in key) { //遍歷無法打印不可枚舉對(duì)象 console.log("pro:" + pro + ";" + key[pro]) } pro:name;KEY pro:constructr;function Person(){ this.name="KEY" } pro:jos;student
console.log(Number.propertyIsEnumerable("parseint")) //false
Object.defineProperties(obj, props) *obj 為源對(duì)象 *props是一個(gè)對(duì)象,里面有configurable,enumerable,value,writable,get,set *configurable 屬性描述符的類型可以被改變并且該屬性可以從對(duì)應(yīng)對(duì)象中刪除。默認(rèn)false *enumerable 是否為枚舉屬性 默認(rèn)為false *value 任意值,默認(rèn)undefined *writable 可以通過賦值改變 默認(rèn)false *get 返回value值,默認(rèn)undefinde *set 設(shè)置value值,默認(rèn)undefine var defind = {}; Object.defineProperties(defind, { "v1": { value: "12" } }); console.log(defind.v1) //12
Object.defineProperty(obj,name, prop) *obj 為源對(duì)象 name為修改的屬性名或設(shè)置,prop同上 Object.defineProperty(defind, "key", { enumerable: false, configurable: false, writable: false, value: "static" });
console.log(Object.getOwnPropertyDescriptor(freeze1, "a")); { value: "1", writable: false, enumerable: true, configurable: false }
console.log(Object.is({}, {})); //false console.log(Object.is([], {})); //false console.log(Object.is([], [])); //false
var o = { prop: "exists" }; console.log(o.hasOwnProperty("prop")); // 返回 true console.log(o.hasOwnProperty("hasOwnProperty")); // 返回 false
每天進(jìn)步一點(diǎn),希望大家喜歡,也希望喜歡的朋友點(diǎn)個(gè)贊,后續(xù)繼續(xù)更新...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/93595.html
摘要:下面定義一個(gè)構(gòu)造函數(shù)不過這樣寫這個(gè)函數(shù),每個(gè)對(duì)象都會(huì)包括一部分,太浪費(fèi)內(nèi)存。原型鏈與繼承在學(xué)習(xí)原型鏈之前我們一定要區(qū)分清楚是構(gòu)造函數(shù)的屬性,而是對(duì)象的屬性。但對(duì)象形式不等于基本類型。用來判斷對(duì)象是否某個(gè)構(gòu)造函數(shù)的實(shí)例。 js是一個(gè)基于對(duì)象的語言,所以本文研究一下js對(duì)象和類實(shí)現(xiàn)的過程和原理。 對(duì)象的屬性及屬性特性 下面是一個(gè)對(duì)象的各個(gè)部分: var person = { name:...
摘要:嘗試刪除一個(gè)密封對(duì)象的屬性或者將某個(gè)密封對(duì)象的屬性從數(shù)據(jù)屬性轉(zhuǎn)換成訪問器屬性,結(jié)果會(huì)靜默失敗或拋出異常嚴(yán)格模式。 擴(kuò)展特性 Object.isExtensible 方法 Object.preventExtensions 方法 密封特性 Object.isSealed 方法 Object.seal 方法 凍結(jié)特性 Object.isFrozen 方法 Object...
摘要:為什么要使用克隆克隆對(duì)象可能包括已經(jīng)修改過的屬性,出來的對(duì)象屬性都還是初始化的值。 為什么要使用克?。? 克隆對(duì)象可能包括已經(jīng)修改過的屬性,new出來的對(duì)象屬性都還是初始化的值。 若直接利用指針指向原有對(duì)象,改變?cè)瓕?duì)象的屬性值時(shí),指針?biāo)笇?duì)象的值也會(huì)改變 clone復(fù)制的對(duì)象與原對(duì)象是相互獨(dú)立存在 如何實(shí)現(xiàn)對(duì)象克隆? 克隆主要分為淺克隆和深克隆 步驟 被復(fù)制類需實(shí)現(xiàn)Cl...
摘要:對(duì)象詳解對(duì)象深度剖析,深度理解對(duì)象這算是醞釀很久的一篇文章了。用空構(gòu)造函數(shù)設(shè)置類名每個(gè)對(duì)象都共享相同屬性每個(gè)對(duì)象共享一個(gè)方法版本,省內(nèi)存。 js對(duì)象詳解(JavaScript對(duì)象深度剖析,深度理解js對(duì)象) 這算是醞釀很久的一篇文章了。 JavaScript作為一個(gè)基于對(duì)象(沒有類的概念)的語言,從入門到精通到放棄一直會(huì)被對(duì)象這個(gè)問題圍繞。 平時(shí)發(fā)的文章基本都是開發(fā)中遇到的問題和對(duì)...
摘要:引用類型之所以會(huì)出現(xiàn)深淺拷貝的問題,實(shí)質(zhì)上是由于對(duì)基本類型和引用類型的處理不同。另外方法可以視為數(shù)組對(duì)象的淺拷貝。上面描述過的復(fù)雜問題依然存在,可以說是最簡(jiǎn)陋但是日常工作夠用的深拷貝方式。 一直想梳理下工作中經(jīng)常會(huì)用到的深拷貝的內(nèi)容,然而遍覽了許多的文章,卻發(fā)現(xiàn)對(duì)深拷貝并沒有一個(gè)通用的完美實(shí)現(xiàn)方式。因?yàn)閷?duì)深拷貝的定義不同,實(shí)現(xiàn)時(shí)的edge case過多,在深拷貝的時(shí)候會(huì)出現(xiàn)循環(huán)引用等問...
閱讀 893·2021-11-22 15:25
閱讀 1529·2021-09-08 09:45
閱讀 1842·2021-09-02 09:46
閱讀 1430·2019-08-30 15:56
閱讀 1594·2019-08-29 15:14
閱讀 1227·2019-08-29 13:06
閱讀 2070·2019-08-29 12:34
閱讀 1469·2019-08-26 12:14