JS 中物件的簡單建立和繼承

2022-02-02 02:20:58 字數 2221 閱讀 1896

物件的簡單建立

1.通過物件直接量建立

比如 var obj = {};

2.通過new 建立

比如 var obj = new object(); // 相當於var obj = {};

var arr = new array();

3.使用 object.create()

這個方法有兩個引數,第乙個引數是這個物件的原型,第二個引數用以對物件的屬性進行進一步描述(可選)

var obj = object.create();

var obj1 = object.create(null

);console.log(obj instanceof object);

//true

console.log(obj1 instanceof object);//

false

使用後obj將繼承來自原型物件object的屬性,並具有obj.x = 1 的屬性值

但當引數為null時,obj1則是乙個沒有原型的新物件,不會繼承任何東西,甚至沒有初始的tostring()方法。

所以,如果僅僅是想建立乙個空物件,有以下三種方式:

var obj ={};

var obj = new

object();

var obj = object.create(object.prototype);

物件的簡單繼承:

可以通過原型繼承建立乙個新物件

以下函式inherit() 返回乙個繼承自原型物件p的屬性的新物件

function

inherit(p)

if(object.create)

var t = typeof

p;

if(t !== "object" && t !== "function")

function f(); //

定義乙個空的建構函式

f.prototype = p; //

原型指向要繼承的物件p

return

new f(); //

建立f物件,此物件繼承自p

}var obj = ;

var obj1 =inherit(obj);

console.log(obj1.x);

//1

如上,obj1繼承了來自obj物件定義的x屬性

又如

function

inherit(p)

if(object.create)

var t = typeof

p;

if(t !== "object" && t !== "function")

function f(); //

定義乙個空的建構函式

f.prototype = p; //

原型指向要繼承的物件p

return

new f(); //

建立f物件,此物件繼承自p

}var o = {}; //

o 繼承object.prototype

o.x = 1;

var p = inherit(o); //

p繼承o和object.prototype

p.y = 2;

var q = inherit(p); //

q繼承p和o和object.prototype

q.z = 3;

console.log(q.x+q.y == q.z);//

true

物件屬性相關操作涉及到了原型鏈的規則

值得注意的是:它總是在原始物件上建立屬性或對已有的屬性賦值,而不會去修改原型鏈;在js中,只有在查詢屬性時才會體會到繼承的存在,而設定屬性則和繼承無關。

還是**解釋吧

var obj1 = ;

var obj2 =inherit(obj1);

console.log(obj1.x);//1

console.log(obj2.x);//

1obj2.x = 2;

console.log(obj1.x);//1

console.log(obj2.x);//

2

JS物件的建立和原型繼承

1.工廠模式建立物件 2.構造器建立物件 3.原型模式 建構函式存在的缺陷就是,若物件有很多個方法那麼就要建立很多個全域性函式,這樣封裝性就不是特別好,而原型模式就是解決這個問題的,每個函式都有乙個prototype屬性,該屬性是乙個指標,指向乙個物件。4.建構函式和原型模式的組合使用 1.原型鏈 ...

JS中物件的建立和使用

直接建立 先建立object類物件,再向物件新增成員。var person new object person.name jt person.print function 函式表示式 呼叫 person.print 以上過程可封裝,減少 冗餘 function getperson name 張三 p...

js 物件建立和呼叫

建立js物件 1 建立物件 function companycommunity 2 這裡繼承公司的屬性,並建立方法 extend true,companycommunity.prototype,二 通過物件建立呼叫方法獲取的引數資訊,並繼承 extend true,options,option 三 ...