JS 建立物件

2021-09-01 22:09:53 字數 2459 閱讀 3935

1、工廠模式,解決了建立多個相似物件的問題,但是沒有解決物件識別的問題。

function creatperson(name, age) 

return obj;

}creatperson("zhangsan", 11).sayhello()

2、建構函式模式

function person(name, age) 

}var p1 = new person("zhangsan", 11);

console.log("p1 :",p1);

console.log("p1 instanceof object :",p1 instanceof object);

console.log("p1 instanceof person: :",p1 instanceof person);

p1.sayhello();

document.write("p1 instanceof object: "+ p1 instanceof object);

document.write("

");document.write("p1 instanceof person: "+p1 instanceof person);

document.write("

");

當使用new建立乙個物件要經過以下過程。

檢查物件的型別要用instanceof

建構函式與其他函式的唯一區別,就在於呼叫他們的方式不同。任何函式只要通過new操作符來呼叫,那他 就是建構函式

所有的物件均繼承自object物件。

通過call方法修改函式的作用域

var obj = new object();

person.call(obj, "obj",12)

obj.sayhello();

3、原型模式

document.write("person.prototype.isprototypeof(p1) :"+person.prototype.isprototypeof(p1)); //true

document.write("

")document.write("object.prototype.isprototypeof(p1) :"+object.prototype.isprototypeof(p1));//true

document.write("

")console.log("object.getprototypeof(p1): ",object.getprototypeof(p1));

console.log("object.keys(p1): ", object.keys(p1));

console.log("object.getownprototypenames(person.prototype): ", object.getownpropertynames(person.prototype));

由於在原型中的查詢是一次搜尋,因此對原型的每一次修改能夠立刻體現在例項上。但如果重新寫整個原型就不行了,因為例項的prototype屬性指向原型,但是修改後的原型找不到了。

var p1 = new person();

person.prototype.tel = 18635581189;

document.write("p1.tel: " + p1.tel);

person.prototype =

document.write("

");document.write("p1.tian: " + p1.tian);

document.write("

");var p2 = new person();

document.write("p2.tian: " + p2.tian);

document.write("

");

4、組合使用建構函式和原型模式eg.
function person(name, age) ;

person.prototype

person.prototype =

}object.defineproperty(person.prototype, "constructor", );

new person("zhang",19).sayhello();

5、動態原型模式eg.

function person(name, age) 

}};new person("zhang", 19).sayhello();

6、寄生建構函式模式,這種模式下返回的值和建構函式的原型沒有關係。

function person(name, age) 

return o;

};var p1 =new person("zhang", 20);

p1.sayhello();

建構函式在不返回值的情況下,預設返回物件的例項。而通過return 可以重寫呼叫建構函式時的返回值。

js 建立js物件

js建立類有集中方法,我個人比較喜歡的方式是 混合的建構函式 原型方式 比較好理解 用建構函式來定義非函式屬性,用原型方式定義物件的函式屬性,結果所有函式鬥只建立一次,而每個物件鬥具有自由的物件屬性例項。function ocar color ocar.prototype.showcolor fun...

js建立物件陣列 JS 物件

定義 無序的資料集合 鍵值對集合 建立物件的方式 new 操作符 object 建立物件 var person new object person.name lisi person.age 21 person.family lida lier wangwu person.say function 2...

js 建立物件

js建立物件方式 var lev function function parent var x parent alert x.name alert x.lev 說明 1.在函式中定義物件,並定義物件的各種屬性,雖然屬性可以為方法,但是建議將屬性為方法的屬性定義到函式之外,這樣可以避免重複建立該方法 ...