網上的資料很多,關於閉包,原型鏈,物件導向之內的。本人也有一點自己的總結。
關於this:
this 的值取決於 function 被呼叫的方式,一共有四種,
var object = .call(this);}}alert(object.getnamefunc())
關於new:如果在乙個函式前面帶上new來呼叫該函式,那麼將建立乙個隱藏連線到該函式的prototype成員的新物件。
js的類的寫法一般分為閉包,prototype 之於的物件兩種。prototype和function物件是js的最特別之處(個人認為最酷的地方,關鍵是寫法非常的靈活而且讀起來結構非常清晰),所以一般我喜歡使用第二種方法寫js的類。
方法很簡單一般是建立空的構造器函式,使其protoype到乙個json結構的物件(這樣結構會非常清晰)。最後對空的構造器函式new , 建立例項。
var pri=,pri:function()}function _temp(){}
_temp.prototype= pri
var s =new _temp()
s.init(123)
s.pri()
var ss=new _temp()
ss.init(1234)
ss.pri()
s.pri()
var d=new _temp()
d.pri()
問題是如果我想在類中寫jquery事件的話,this就會指向擊發事件的dom物件而不是函式物件,所以根據作用域,在事件函式前方法函式(pri)中將this屬性傳給區域性變數var i與 var $obj 特別要注意的是必須加上var,否則就是全域性變數(成為window全域性物件的乙個屬性,而不是pri方法的私有變數,在建立多個例項的情況下會出錯)。
正確寫法,加var
var p = ,pri:function () )
this.i = i}}
function _temp()
_temp.prototype = p
var s = new _temp()
s.init($("#ee"), 1)
s.pri()
var ss = new _temp()
ss.init($("#co"), 20)
ss.pri()
var p = ,pri:function () )
this.i = i}}
function _temp() }與 var p=}的本質區別
$(document).ready(function () ,
pri:function () )
}}function temp()
temp.prototype = p;
var k1 = new temp($(".div1"), 2)
k1.pri()
var k2 = new temp($(".div2"), 25)
k2.pri()
})
錯誤示例
JS 物件 JS原型 原型鏈
參考學習 js物件 構造器函式 建立物件的函式。物件分為普通物件和函式物件。所有物件都有 proto 屬性 函式物件不止有 proto 屬性,還有prototype屬性 稱為原型物件 1.new function 產生的物件都是函式物件。2.所有函式物件的 proto 都指向function.pro...
JS原型物件,原型鏈
js中建立物件都是通過建構函式建立的,所以每個物件中都有乙個指向其建構函式的指標constructor var obj new object var arr new array var obj2 字面量建立實質上是上面方式的簡寫 var arr2 var str new string test 建立...
js原型物件 原型鏈 繼承
原型物件 只要建立了乙個新函式,就會根據一些特定的規則為該函式建立乙個prototype屬性,這個屬性指向的物件就是該新函式的原型物件。預設情況下,所有原型物件都會自動獲取乙個constructor屬性,這個屬性是乙個指向prototype屬性所在函式的指標 原型物件的優點 可以讓所有物件例項共享它...