物件的簡單建立
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的屬性的新物件
functioninherit(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屬性
又如
functioninherit(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 三 ...