js中的constructor
生活随笔
收集整理的這篇文章主要介紹了
js中的constructor
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
定義和用法
constructor 屬性返回對創建此對象的 Date 函數的引用。
語法
object.constructor
constructor屬性不影響任何JavaScript的內部屬性。instanceof檢測對象的原型鏈,通常你是無法修改的(不過某些引擎通過私有的__proto__屬性暴露出來)。
constructor其實沒有什么用處,只是JavaScript語言設計的歷史遺留物。由于constructor屬性是可以變更的,所以未必真的指向對象的構造函數,只是一個提示。不過,從編程習慣上,我們應該盡量讓對象的constructor指向其構造函數,以維持這個慣例。
舉個例子
var a,b;
(function(){
function A (arg1,arg2) {
this.a = 1;
this.b=2;
}
A.prototype.log = function () {
console.log(this.a);
}
a = new A();
b = new A();
})()
a.log();
// 1
b.log();
// 1
通過以上代碼我們可以得到兩個對象,a,b,他們同為類A的實例。因為A在閉包里,所以現在我們是不能直接訪問A的,那如果我想給類A增加新方法怎么辦?
// a.constructor.prototype 在chrome,firefox中可以通過 a.__proto__ 直接訪問
a.constructor.prototype.log2 = function () {
console.log(this.b)
}
a.log2();
// 2
b.log2();
// 2
通過訪問constructor就可以了。或者我想知道a的構造函數有幾個參數?
a.constructor.length
或者再復雜點,我想知道a的構造函數的參數名是什么(angular的依賴注入就是通過此方法實現的據說)
a.constructor
.toString()
.match(/(.*)/)
.pop().slice(1,-1)
.split(',');
// ["arg1", "arg2"]
原文:https://segmentfault.com/q/1010000000347868
總結
以上是生活随笔為你收集整理的js中的constructor的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python模块之pickle(列表,字
- 下一篇: path、classpath理解