A_115_javaScript原型链
2021-04-09 10:52:04 0 举报
AI智能生成
全面、高效的知识图谱:A_115_javaScript原型链!! 全面又深度的提升认知,达到实际应用的目的! 建议先纵观全局,掌握好大方向。 再根据自己的需要,针对性的学习某一个点,最后做到逐步由点及面。
作者其他创作
大纲/内容
继承控制
Object
Object.setPrototypeOf(child, parent);
Object.prototype.extend
class
class Porsche extends Car
function
inherits(Chinese, People) & People.call(this, name, age)
inherits(Chinese, People)
分支主题
分支主题
分支主题
作用
child.prototype = Object.create(parent.prototype)
通过prototype的覆盖获得parent所有的数据结构
注意,覆盖会造成自身数据结构的丢失
如需自定义数据结构需要在inherits()后赋予
People.call(this, name, age)
分支主题
分支主题
作用
调用call,使用当前this(English)执行People函数
构造 Constructor
声明对象
分支主题
实例对象
分支主题
概念
JavaScript之继承(原型链)
数据结构
var Person = function(){};
Person.prototype.type = 'Person';
Person.prototype.maxAge = 100;
分支主题
prototype(原型)
constructor(构造方法)
Person.prototype.constructor === Person;
自己的构造,指向自己. 无限循环
__proto__(原型链)
Person.prototype.__proto__ === Object.prototype
指向Object对象prototype(原型)
__proto__(原型链/遗传进化链)
第一层指向,Function对象prototype(原型)
分支主题
Person.__proto__ === Function.prototype
同时Function对象的__proto__(原型链)也指向Function的prototype(原型)
Function.__proto__ === Function.prototype
第二层指向,Object对象prototype(原型)
分支主题
Person.__proto__.__proto__ === Object.prototype
第三次指向,null
Person.__proto__.__proto__.__proto__ === null
var p = new Person();
console.log(p.maxAge);
p.name = 'rainy';
分支主题
实例对象没有prototype原型属性
仅具有__proto__(原型链)
第一层指向,Person对象prototype(原型)
new Person().__proto__ === Person.prototype
第二层指向,Object对象prototype(原型)
new Person().__proto__.__proto__ == Object.prototype
第二层指向,还等同Person对象的第二层指向
new Person().__proto__.__proto__ === Person.__proto__.__proto__
第三次指向,null
new Person().__proto__.__proto__.__proto__ === null
prototype、__proto__的关系
dir(Array)
分支主题
dir(new Array())
new Array().__proto__ === Array.prototype
true
Array.prototype
分支主题
Array.
分支主题
可访问form直接方法
也可访问Array.__proto__内方法
也可访问Array.__proto__.__proto__.... 内方法[继承]
检验是否非进化链__proto__继承的属性
分支主题
.hasOwnProperty("")
构造指向自己
Array.prototype.constructor === Array
true
Array.prototype.constructor.prototype.constructor.prototype.constructor ....
function Array() { [native code] }
__proto__
分支主题
遗传进化链 or 进化链指针
进化链指针
new String().__proto__ === String.prototype
JS内置构造器和自定义函数都是Function构造器的原型(prototype)
Array.__proto__ === Function.prototype
true
String.__proto__ === Function.prototype
true
Function.__proto__ === Function.prototype
true
只有Function.prototype是函数(function)类型
分支主题
为了保证函数构造器们的__proto__指向的都是函数
不能new的目标
分支主题
没有构造函数(不是函数),不能new
分支主题
分支主题
function才有构造,object没有
0 条评论
下一页