生活随笔
收集整理的這篇文章主要介紹了
ES5-10 原型、原型链、闭包立即执行函数、插件开发
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
重學(xué)第六章
1. 原型
- 實(shí)例內(nèi)屬性和原型上屬性重名時(shí)(屏蔽)
function
Test(name
) {this
.name
= name
}
Test
.prototype
.name
= 'hhh'
let tObj
= new Test('yyy')
console
.log(tObj
.name
)
tObj
.name
= null
console
.log(tObj
.name
)
delete tObj
.name
console
.log(tObj
.name
)
- 實(shí)例的__proto__屬性指向的對(duì)象有constructor屬性,指向構(gòu)造函數(shù)
function
Test() {}
let tObj
= new Test()
console
.log('實(shí)例', tObj
)
console
.log('constructor', tObj
.constructor
)
console
.log(tObj
.constructor
=== tObj
.__proto__
.constructor
)
- 實(shí)例(實(shí)例化的時(shí)候)的__proto__ 和構(gòu)造函數(shù)的prototype全等,
function
Test() {}
Test
.prototype
.name
= 'name'
let tObj
= new Test()
console
.log('實(shí)例', tObj
)
console
.log('實(shí)例__proto__', tObj
.__proto__
)
console
.log('prototype', Test
.prototype
)
console
.log(tObj
.__proto__
== Test
.prototype
)
-
切斷了prototype 和 __proto__的聯(lián)系,并且丟失了constructor
-
手動(dòng)在字面量里添加constructor會(huì)讓這個(gè)屬性的[[Enumerabl]]變?yōu)閠rue
-
可用Object.defineProperty(Car.prototype,constructor,{
enumerable:false,value:Car})
不加debugger
-
在實(shí)例化之后再改prototype (跟實(shí)例化前后也有點(diǎn)關(guān)系)
function
Test() { }
Test
.prototype
.name
= 'hhh'
Test
.prototype
= {name
: '111'
}
let tObj
= new Test()
Test
.prototype
.name
= '666'
console
.log(tObj
.name
)
console
.log(tObj
.__proto__
=== Test
.prototype
)
console
.log(Test
.prototype
.isPrototypeOf(tObj
))
function
Test() { }
Test
.prototype
.name
= 'hhh'
Test
.prototype
= {name
: '111'
}
let tObj
= new Test()
Test
.prototype
= {name
: '666'
}
console
.log(tObj
.name
)
console
.log(tObj
.__proto__
=== Test
.prototype
)
console
.log(Test
.prototype
.isPrototypeOf(tObj
))
2. 插件開發(fā)
; (function
() {function
Compute(a
, b
) {this
.a
= athis
.b
= b
}Compute
.prototype
.plus
= function
() {return this
.a
+ this
.b
}Compute
.prototype
.minus
= function
() {return this
.a
- this
.b
}Compute
.prototype
.multi
= function
() {return this
.a
* this
.b
}Compute
.prototype
.div
= function
() {return this
.a
/ this
.b
}window
.Compute
= Compute
})()
let computeObj
= new Compute(8, 2)
console
.log('加', computeObj
.plus())
console
.log('減', computeObj
.minus())
console
.log('乘', computeObj
.multi())
console
.log('除', computeObj
.div())
總結(jié)
以上是生活随笔為你收集整理的ES5-10 原型、原型链、闭包立即执行函数、插件开发的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。