當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
js原型和原型链_JS里的原型和原型链
生活随笔
收集整理的這篇文章主要介紹了
js原型和原型链_JS里的原型和原型链
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
JS里的原型與原型鏈
原型
原型和原型鏈的目的是解決構造函數生成的對象內共同屬性重復生成的問題,使其更高效。在下面這個例子里每次生成一個實例對象都要生成一個mmm方法,沒有必要,完全可以共享。
構造函數生成的對象稱為實例對象
function Person(name,gender){this.name = namethis.gender = genderthis.mmm = function reader(){console.log('hello world')} }var person1 = new Person(Jack,male) var person2 = new Person(Lucy,female)person1和person2是構造函數Person生成的兩個實例對象
function Person(name,gender){this.name = namethis.gender = gender} Person.prototype.mmm = function reader(){console.log('hello world')} var person1 = new Person(Jack,male) var person2 = new Person(Lucy,female)person1.mmm // 'hello world' person2.mmm // 'hello world'上面例子里構造函數Person的prototype屬性就是person1和person2的原型對象,原型對象添加一個mmm屬性,兩個實例對象都共享這個屬性。
原型鏈
JS里面規定所有對象都有自己的原型對象,而原型對象也是對象因此也有自己的原型對象,而且任何一個對象都可以充當其他對象的原型,因此會形成一個原型鏈
如果一層層上溯,所有對象的原型都可以追溯到Object.prototype,既Object構造函數的prototype屬性,也就是說所有的屬性都繼承了Object.prototype的屬性,這就是所有對象都有valueOf()和toString()方法的原因,因為這兩個方法在Object.prototype里面。
需要注意Object.prototype的原型是null
kNwh5R.md.png
String.prototype是String公用屬性引用(防止被垃圾回收)
總結
以上是生活随笔為你收集整理的js原型和原型链_JS里的原型和原型链的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么确定自己是第几层递归_递归(1)——
- 下一篇: python socket服务器_pyt