如何準確判斷乙個變數是陣列型別new的時候把引數傳入也可不傳寫乙個原型鏈繼承的例子
描述new乙個物件的過程
zepto(或其他框架)原始碼中如何使用原型鏈
new函式執行時,建立乙個空物件
this指向這個新物件this = {}
執行**,即對this.name等開始順序賦值
賦值完後,預設return this
賦值給f
,f.name
、f.age
、f.class
生效
function
foo(name, age)
var f =
newfoo
('zhangsan',20
);// var f1 = new foo('lisi', 23); 可建立多個物件
所有的引用型別(陣列、物件、函式),都具有物件特性,即可自由擴充套件屬性(null
除外)
var obj =
;obj.a =
100;
var arr =
;arr.a =
100;
functionfn(
);fn.a =
100;
所有的引用型別,都有乙個__proto__
屬性(隱式原型屬性),屬性值是乙個普通的物件
console.
log(obj.__proto__)
;console.
log(arr.__proto__)
;console.
log(fn.__proto__)
;
所有函式,都有乙個prototype
屬性(顯式原型屬性),屬性值是乙個普通的物件
console.
log(fn.prototype)
;
所有引用型別,__proto__
屬性值指向(完全等===)他的建構函式的prototype
屬性值
console.
log(obj.__proto__ === object.prototype)
當試圖得到乙個物件的某個屬性時,若果這個物件本身沒有這個屬性,那麼它的__proto__
(即它的建構函式的prototype
)中尋找
// 建構函式
function
foo(name, age)
foo.prototype.
alertname
=function()
// 建立例項
var f =
newfoo
('zhangsan');
f.printname
=function()
// 測試
f.printname()
;f.alertname()
;
var item;
for(item in f)
}
// 建構函式
function
foo(name, age)
foo.prototype.
alertname
=function()
// 建立例項
var f =
newfoo
('zhangsan');
f.printname
=function()
// 測試
f.printname()
;f.alertname()
;f.tostring()
;// 要去f.__proto__.__proto__中查詢
如何準確判斷乙個變數是陣列型別
var arr =
arr instanceof
array
//true
typeof arr //object,typeof是無法判斷陣列的
寫乙個原型鏈繼承的例子
// 動物
function
animal()
}// 狗
function
dog()}
dog.prototype =
newanimal()
;// 哈士奇
var hashiqi =
newdog()
;console.
log(hashiqi.eat)
;console.
log(hashiqi.bark)
;
// 乙個封裝dom查詢的例子
function
elem
(id)
elem.prototype.
html
=function
(val)
else
}elem.prototype.on=
function
(type, fn)
var div1 =
newelem
('div1');
console.
log(div1.
html()
);div1.
html
('hello world')
.on('click'
,function()
).html
('j**ascript
')
描述new乙個物件的過程
zepto(或其他框架)原始碼中如何使用原型鏈
js 原型與原型鏈
5條原型規則 1.所有的引用型別 陣列 物件 函式 都具有物件特性,即可自由擴充套件屬性 除了 null 除外 2.所有的引用型別 陣列 物件 函式 都有乙個 proto 隱式原型 屬性,屬性值是乙個普通的物件。3.所有的函式,都有乙個prototype 顯式原型 屬性,屬性值也是乙個普通的物件。4...
JS原型與原型鏈
凡是通過new function 建立的物件都是函式物件,其他的是普通物件。var o1 var o2 new object var o3 new f1 function f1 var f2 function var f3 new function str console.log str conso...
js原型與原型鏈
定義函式的時候都建立了乙個函式物件,裡面有個prototype屬性指向了乙個object空物件,這個物件就是函式的原型物件。原型物件中有個constructor屬性,指向函式物件 通過new建立的物件,有個 proto 屬性 左右都是兩個下劃線 它等於對應建構函式的的prototype的值,如上圖。...