js基於原型鏈,物件的類的寫法

2022-02-26 19:24:25 字數 1560 閱讀 7177

網上的資料很多,關於閉包,原型鏈,物件導向之內的。本人也有一點自己的總結。

關於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屬性所在函式的指標 原型物件的優點 可以讓所有物件例項共享它...