1、原型链继承 : 得到方法 2、借用构造函数 : 得到属性 3、组合 4、new一个对象背后做了些什么? 创建一个空对象 给对象设置__proto__, 值为构造函数对象的prototype属性值 【this.__proto__ = Fn.prototype】 执行构造函数体(给对象添加属性/方法 ...
分类:
其他好文 时间:
2020-02-02 22:02:06
阅读次数:
95
本文我们介绍下js中this的用法。 由上图可得,默认this指向window,而在node.js中this默认指向global。 由上图可得: 1.原型链为o->MyClass.prototype。 2.函数如果没有明确返回值默认返回this。 由上图可得:call和apply功能相同,不同之处为 ...
分类:
编程语言 时间:
2020-02-01 14:37:29
阅读次数:
72
继承模式 继承发展史 1、传统形式--原型链 过多的继承了没用的属性 2、借用构造函数 不能继承借用构造函数的原型 每次构造函数要多走一个函数 3、共享原型 不能添加自己原型的自定义属性,会把共享原型的对象的原型的属性也更改。 4、圣杯模式 //1.原型链 Grand.prototype.lastN ...
分类:
Web程序 时间:
2020-02-01 10:25:30
阅读次数:
83
在讨论原型继承之前,先回顾一下关于创建自定义类型的方式,这里推荐将构造函数和原型模式组合使用,通过构造函数来定义实例自己的属性,再通过原型来定义公共的方法和属性。 这样一来,每个实例都有自己的实例属性副本,又能共享同一个方法,这样的好处就是可以极大的节省内存空间。同时还可以向构造函数传递参数,十分的 ...
分类:
编程语言 时间:
2020-01-30 22:38:25
阅读次数:
74
要彻底弄明白js中的继承,我们首先要弄清楚js中的一个很重要的概念那就是原型链。 1.什么是原型链? 我们知道每个构造函数都有一个原型对象,原型对象包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。如果,让原型对象等于另一个引用类型的实例,那么原型对象中将包含一个指向另一个原型的指 ...
分类:
Web程序 时间:
2020-01-30 22:32:18
阅读次数:
76
根据在创建对象的时候,创建出来的对象的__proto__指向创建这个对象的函数的prototype属性。 由于在调用对象的属性或者方法的时候会首先在对象的作用域中查找指定的属性或者方法,如果未找到则会去对象的原型链(即__proto__对象)上查找。所以可以在自定义函数的时候往函数的prototyp ...
分类:
Web程序 时间:
2020-01-30 15:54:52
阅读次数:
98
一些个人的理解,不一定是对的,仅供参考。 在JS中有函数和对象两个概念,而又有一切皆对象的概念及函数也是一个对象。所以可以说函数一定可以作为一个对象,而对象不一定是一个函数。 也可以说在js中对象分为两种:1.仅仅是一个对象2.既时对象又是函数(以下称为函数对象) 在JS中有一个概念:所有对象都有_ ...
分类:
Web程序 时间:
2020-01-30 14:10:01
阅读次数:
66
概述 instanceof运算符用来判断一个构造函数的prototype属性所指向的对象是否存在另外一个要检测对象的原型链上 语法 obj instanceof Object;//true 实例obj在不在Object构造函数中 描述 instanceof 运算符用来检测 constructor.p ...
分类:
Web程序 时间:
2020-01-27 22:09:05
阅读次数:
82
我们可以重写js对象属性的get和set方法。 从上图我们可以看出set和get的语法。 上图则是使用set和get方法对对象的属性进行了输入校验。 从上图可得若对象的原型链上具有不可配置的同名属性(Object.defineProperty定义的属性默认是不可配置的,即writable=false ...
分类:
编程语言 时间:
2020-01-22 18:39:06
阅读次数:
215
在js对象中,我们可以对对象属性进行操作。 上图的要点为:for-in会把原型链上的可枚举属性也列出来。 上图的要点为:可以使用逻辑运算符&&进行层层查找对象是否为undefined,从而在赋值过程中不报错。 上图的要点为: 1.delete不存在的属性,依旧返回true。 2.Object.get ...
分类:
编程语言 时间:
2020-01-22 16:43:52
阅读次数:
79