美文网首页
JS原型和原型链

JS原型和原型链

作者: 郝同学1208 | 来源:发表于2020-11-04 16:10 被阅读0次

文章序

为了彻底搞清楚JS的原型和原型链以及prototype和proto这两个属性,故在此做详细总结并举例,首先,有如下代码:

function Person () {}
var person = new Person()
var obj = new Object({name:'hpf'})
console.log('----------person的相关属性--------------')
console.log(person) //Person {}
console.log(person.prototype) //undefined
console.log(person.__proto__ ) //{constructor: ƒ}
console.log('----------Person的相关属性--------------')
console.log(Person) //Person () {}
console.log(Person.prototype) //{constructor: ƒ}
console.log(Person.__proto__ ) //ƒ () { [native code] }
console.log('----------obj的相关属性--------------')
console.log(obj) //{name: "hpf"}
console.log(obj.prototype) //undefined
console.log(obj.__proto__ ) //{constructor: ƒ, __defineGetter__: ƒ, __defineSetter__: ƒ, hasOwnProperty: ƒ, __lookupGetter__: ƒ, …}
console.log('----------Object的相关属性--------------')
console.log(Object) //ƒ Object() { [native code] }
console.log(Object.prototype) //{constructor: ƒ, __defineGetter__: ƒ, __defineSetter__: ƒ, hasOwnProperty: ƒ, __lookupGetter__: ƒ, …}
console.log(Object.__proto__) //ƒ () { [native code] }
console.log('----------Person.prototype的属性关系-------------')
console.log(Person.prototype) //{constructor: ƒ}
console.log(Person.prototype.prototype) //undefined
console.log(Person.prototype.__proto__) //{constructor: ƒ, __defineGetter__: ƒ, __defineSetter__: ƒ, hasOwnProperty: ƒ, __lookupGetter__: ƒ, …}
console.log('----------Object.prototype的属性关系-------------')
console.log(Object.prototype) //{constructor: ƒ, __defineGetter__: ƒ, __defineSetter__: ƒ, hasOwnProperty: ƒ, __lookupGetter__: ƒ, …}
console.log(Object.prototype.prototype) //undefined
console.log(Object.prototype.__proto__) //null
console.log('-----------属性关系-------------')
console.log(Person.prototype === person.__proto__) //true
console.log(Person.prototype.constructor === Person)//true
console.log(Object.prototype === obj.__proto__) //true
console.log(Object.prototype.constructor === Object)//true
console.log(Person.prototype.__proto__ === Object.prototype) //true
console.log(Object.prototype.__proto__ === null) //true

画图理解如下:


原型关系

原型链

console.log(person.__proto__.__proto__.__proto__) //null
console.log(obj.__proto__.__proto__) //null

相关文章

  • 廖雪峰JS小记

    (function(){})() 原型,原型链 浅谈Js原型的理解JS 原型与原型链终极详解 对象 对象:一种无序...

  • JS的__proto__和prototype

    最近在回顾JS的原型和原型链的知识,熟悉JS的同学都知道JS的继承是靠原型链实现的,那跟原型链相关的属性__pro...

  • Javascript(三)之原型继承理解

    进阶路线 3 原型继承 3.1 优秀文章 最详尽的 JS 原型与原型链终极详解 一 最详尽的 JS 原型与原型链终...

  • 2022前端高频面试题

    JS相关 1.原型和原型链是什么 原型和原型链都是来源于对象而服务于对象的概念js中引用类型都是对象,对象就是属性...

  • 关于JS中的原型和原型链

    目录 关于js 对象和原型 原型链 基于原型链的继承 参考资料ECMAScript 6 入门JavaScript原...

  • 深入javascript之原型和原型链

    原型和原型链是js中的难点也是重点,明白了原型和原型链会让我们在后面不管是学习还是工作都会更加高效,并且原型和原型...

  • JavaScript原型对象与原型链

    一、前言 原型和原型链是 JavaScript中不可避免需要碰到的知识点,在刚开始学习 JS 时,原型和原型链都是...

  • 原型和原型链

    今天发现一张特别好的图(↑↑↑上图↑↑↑),对原型和原型链的理解特别直观友好。 原型和原型链 基础储备:每个 JS...

  • 2018-01-09 关于javascript原型链的思考 pl

    s 深入理解原型和原型链? 构造函数 理解原型和原型链 new的时候js都干了什么? 一个实现继承的demo 构造...

  • js基础(三)

    js基础 原型链和原型对象 ... ... js没有继承原型对象prototype通常用来添加公共的属性或行为且只...

网友评论

      本文标题:JS原型和原型链

      本文链接:https://www.haomeiwen.com/subject/yalgvktx.html