定義
無序的資料集合
鍵值對集合
建立物件的方式
new 操作符 + object 建立物件
var person = new object();
person.name = "lisi";
person.age = 21;
person.family = ["lida","lier","wangwu"];
person.say = function()
2. 字面式建立物件
var person =
};
3. 建構函式模式
function person(name,age,family)
}var person1 = new person("lisi",21,["lida","lier","wangwu"]);
var person2 = new person("lisi",21,["lida","lier","lisi"]);
鍵名是字串,不是識別符號,可以包含任意字元。
引號可以省略,省略之後就只能寫識別符號。
就算引號省略了,鍵名也還是字串
物件的隱藏屬性
隱藏屬性
delete 操作符用於刪除物件的某個屬性
語法
delete object.property
delete object[『property』]
通過delete操作符, 可以實現對物件屬性的刪除操作,如果返回為true,則刪除成功。
如果刪除的屬性不存在,delete將不會起任何作用,但仍會返回true
delete操作只會在自身的屬性上起作用
語法
obj.key
obj.['key'] //裡面的是字串,而不是變數
object.keys(): 返回乙個包括物件內可列舉屬性以及方法名稱的陣列。
object.getownpropertynames():方法返回乙個指定物件所有自身屬性的屬性名組成的陣列。
3.object.hasownproperty() 判斷自身屬性與共有屬性
4.object.hasownproperty() 判斷自身屬性是否存在
1. 修改或增加屬性
直接賦值:如果key存在,直接修改key的值,如果key不存在,那麼這個物件就會新增乙個key並賦值。
示例
let person=
console.log(person.name )//"lanycsq"
person.name='xiao'
console.log(person.name ) // "xiao"
person.age=18
console.log(person.name ) //
批量賦值:
示例
var person=
console.log(person) //
object.assign(person,)
console.log(person) //
2. 修改或增加共有屬性
無法通過自身修改或增加共有屬性
let obj={}, obj2={} //共有屬性tostring
obj.tostring='***' //只是在改obj自身屬性
obj2.tostring //還是在原型上
如果偏要修改或增加原型上的屬性:
obj.__proto__.tostring='***' //不推薦使用__proto__
object.prototype.tostring='***'
一般來說,不要修改原型,會引起很多問題
3. 修改隱藏屬性
推薦使用object.create
let common=
let obj=object.create(common) //以common為原型建立obj
obj.name='jack'
function person()
person.prototype.name = "lanycsq";
var person = new person();
console.log(person.hasownproperty("name")); //false
console.log("name" in person); //true
console.log(person.name); //"lanycsq"
person.name = "xiaoxiao";
console.log(person.hasownproperty("name")); //true
console.log("name" in person); //true
console.log(person.name); //"xiaoxiao"
delete person.name;
console.log(person.hasownproperty("name")); //false
console.log("name" in person); //true ,這個時候訪問的原型物件上的name
console.log(person.name); //"lanycsq"
以上**執行的時候,name屬性可以從例項中獲取的或者原型物件中獲取,因此使用in 來訪問 name屬性始終返回true;而hasownproperty()只能獲取例項物件中的屬性,所以當delete person.name後,例項物件中的name被刪除,所以後面用hasownproperty返回false。當刪除了例項中的name屬性後,恢復了原型中name屬性的連線,所以返回lanycsq。 js 建立js物件
js建立類有集中方法,我個人比較喜歡的方式是 混合的建構函式 原型方式 比較好理解 用建構函式來定義非函式屬性,用原型方式定義物件的函式屬性,結果所有函式鬥只建立一次,而每個物件鬥具有自由的物件屬性例項。function ocar color ocar.prototype.showcolor fun...
js 建立物件
js建立物件方式 var lev function function parent var x parent alert x.name alert x.lev 說明 1.在函式中定義物件,並定義物件的各種屬性,雖然屬性可以為方法,但是建議將屬性為方法的屬性定義到函式之外,這樣可以避免重複建立該方法 ...
JS建立物件
js因為沒有類的概念,所以建立物件時就會有許多的問題,下面列舉幾種建立物件的模式.現在前面做乙個列表 一 工廠模式 二 建構函式模式 三 原型模式 四 組合使用建構函式模式和原型模式 五 動態原型模式 六 寄生構造模式 七 穩妥建構函式模式 工廠模式 用函式來封裝一特定的介面建立物件的細節 func...