这篇“javascript中原型和原型链的示例分析”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“javascript中原型和原型链的示例分析”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,下面让我们一起来看看具体内容吧。
1.JavaScript主要用来向HTML页面添加交互行为。 2.JavaScript可以直接嵌入到HTML页面,但写成单独的js文件有利于结构和行为的分离。 3.JavaScript具有跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行。
[[Prototype]]
几乎所有对象在创建的时候都会生成[[Prototype]]链,就是人们常说的原型链,当你试图引用对象的属性时,会触发对象的[[Get]]操作,对于默认的[[Get]]操作来说,第一步就是去查找当前的对象中有没有你要引用的属性,如果有就会使用它,如果没有找到,就会去查找这个对象的原型链,举个例子:
var one = { type: 'one' } var two = Object.create(one) console.log(two.type) // one
在上述例子中,two对象中并没有type属性,但是由于Object.create(创建一个新对象,带着指定的原型对象和属性)将one对象和two对象联系到一起,因此在原型链的查找过程中,即便在two对象中没有找到type属性,会继续向上查找,在one对象中查找到type属性并打印,如果沿着原型链一直向上查找都没有找到,则会打印undefined
prototype
要讲清楚prototype是什么先举一个简单的例子:
function origin(type) { this.type = type console.log(this.type) } origin.prototype.name = 'origin' var son1 = new origin('male') var son2 = new origin('male') console.log(son1.name) // origin console.log(son2.name) // origin
函数origin的prototype属性实际上相当与一个对象,这个对象指向实例son1和son2的原型对象,因此,当调用name属性,会沿着原型链一直向上找,输出origin.prototype.name的值,简单来说,函数的prototype对象会指向实例的原型,从另一个角度上来说,也可以说son1和son2继承了函数origin的prototype对象
constructor
先看一个简单的例子:
function origin() { } const son = new origin() console.log(origin.prototype.constructor === origin) // true console.log(son.constructor === origin) // true
origin.prototype默认有一个公有并且不可枚举的属属性,constructor,并且这个属性引用的是对象关联的函数,因此origin.prototype.construct = origin,同时实例对象son也有一个construcor属性,指向创建这个对象的函数
_proto_
__proto__其实是一个绝大多数浏览器支持的用来访问内部原型链的一个属性
son.__proto__ === origin.prototype // true
当调用son.__proto__实际上调用了son.__proto__(),返回值和Object.getPrototypeOf(origin)结果相同
感谢你的阅读,希望你对“javascript中原型和原型链的示例分析”这一关键问题有了一定的理解,具体使用情况还需要大家自己动手实验使用过才能领会,快去试试吧,如果想阅读更多相关知识点的文章,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。