js原型及原型链
2021-02-02 14:16
标签:添加 纠正 两种 高级 class object 没有 函数定义 eof js的原型分为两种,显示原型( prototype )跟隐式原型(__proto__); 显示原型 : 每个函数在声明时,都会自动创建一个显示原型,默认指向一个空Object对象(即原型对象); 隐式原型 : 每个实例对象在创建时,也会自动创建一个隐式原型(__proto__),实例对象隐式原型的值 == 构造函数显示原型的值 原型链的属性问题 查找 : 当在自身中没有找到该属性或者方法,则会自动沿着隐式原型链查找 (原型链也称为隐式原型链),直到原型链的尽头(即Object的原型对象),找到则返回,找不到返回undefined 设置 : 设置属性时,不会牵扯到原型链,当自身中没有该属性,则直接添加此属性并设置值 方法一般定义在原型链中,属性则通过构造函数定义在对象自身 探索instanceof是如何判断的 表达式: A instanceof B 如果B函数的显示原型对象在A对象的原型链上(隐式原型),则返回true,否则返回false 补充 1. 函数的原型对象,默认是一个空的Object对象,但它里面其实是有数据的,它也会有一个隐式原型,值是object的显示原型 因为它也是一个实例对象,是通过new Object产生的,所有它的隐式原型的值==Object的显示原型 2. 函数本身也是一个实例对象,因为它是通过new Function所产生的! 即函数也拥有隐式原型属性,值向Function的显示原型 3.Function的显示原型与它自身的隐式原型相等,因为Function是通过new自身产生的实例 4.Object的原型对象没有隐式原型对象!它的隐式原型的值是null. 所有object的原型对象是原型链的尽头 初学js高级,对js原型链还不太熟悉,欢迎各位大佬补全纠正 2020-06-20 js原型及原型链 标签:添加 纠正 两种 高级 class object 没有 函数定义 eof 原文地址:https://www.cnblogs.com/buwenxin/p/13170252.html js原型与原型链
// 定义一个构造函数
function Pr() {
// 在函数创建时,会自动创建一个prototype 相当于在函数内添加一条语句 this.prototype = {}:
}
// 创建实例
var p = new Pr; // 创建实例时,自动创建 __proto__ 即 this.__proto__==Pr.prototype;