js原型补充】的更多相关文章

js定义函数: <script> function A() {} let a1 = new A(); let a2 = new A(); // 为A类添加原型 => 类似于类属性 A.prototype.num = 100; console.log(a1.num); console.log(a2.num); </script> ES6语法下类 class B { constructor(name) { this.name = name; } } let b1 = new B(…
本系列用了大量的篇幅讲解了上下文环境和作用域,有些人反映这两个是一回儿事.本文就用一个小例子来说明一下,作用域和上下文环境绝对不是一回事儿. 再说明之前,咱们先用简单的语言来概括一下这两个的区别. 00 上下文环境: 可以理解为一个看不见摸不着的对象(有若干个属性),虽然看不见摸不着,但确实实实在在存在的,因为所有的变量都在里面存储着,要不然咱们定义的变量在哪里存? 另外,对于函数来说,上下文环境是在调用时创建的,这个很好理解.拿参数做例子,你不调用函数,我哪儿知道你要给我传什么参数? 01 作…
在刚刚接触JS原型链的时候都会接触到一个熟悉的名词:prototype:如果你曾经深入过prototype,你会接触到另一个名词:__proto__(注意:两边各有两条下划线,不是一条).以下将会围绕prototype和__proto__这两个名词解释为什么不能在原型链上使用对象以及JS原型链的深层原理. 一.为什么不能在原型链上使用对象: 先举一个非常简单的例子,我有一个类叫Humans(人类),然后我有一个对象叫Tom(一个人)和另一个对象叫Merry(另一个人),很明显Tom和Merry都…
深入理解js原型和闭包笔记: 1.“一切皆是对象”,对象是属性的集合. 丨 函数也是对象,但是使用typeof时为什么函数返回function而 丨  不是object呢,js为何要对函数做这样的区分?函数和对象到底什么关系呢? 2.函数和对象的关系(对象是函数创建的,但同时函数又是一种对象) 丨 对象是通过函数创建的,那它的属性是如何通过函数构造的,又为什么说函数自身也是一种 丨对象呢,函数有什么对象的特征(对象的特质是属性的集合),难道函数也是属性的集合?它 丨有什么属性呢? 3.函数的属性…
本文对<深入理解js原型和闭包(10)——this>一篇进行补充,原文链接:https://www.cnblogs.com/lauzhishuai/p/10078307.html 原文中,讲解了在javascript中this的各个情况,写完之后发现还落下一种情况,就此补充. 原文中this的其中一种情况是构造函数的,具体的内容可以参考原文,此处不再赘述. 要补充的内容是,在构造函数的prototype中,this代表着什么. 如上代码,在Fn.prototype.getName函数中,thi…
接着上一节讲的话,应该轮到“执行上下文栈”了,但是这里不得不插入一节,把this说一下.因为this很重要,js的面试题如果不出几个与this有关的,那出题者都不合格. 其实,this的取值,分四种情况.我们来挨个看一下. 在此再强调一遍一个非常重要的知识点:在函数中this到底取何值,是在函数真正被调用执行的时候确定的,函数定义的时候确定不了.因为this的取值是执行上下文环境的一部分,每次调用函数,都会产生一个新的执行上下文环境. 情况1:构造函数 所谓构造函数就是用来new对象的函数.其实…
文章转载:https://www.cnblogs.com/wangfupeng1988/p/4001284.html 说明: 本篇文章一共16篇章,外加两篇后补的和一篇自己后来添加的学习笔记,一共19篇文章. 该教程绕开了javascript的一些基本的语法知识,直接讲解javascript中最难理解的两个部分,也是和其他主流面向对象语言区别最大的两个部分——原型和闭包,当然,肯定少不了原型链和作用域链.帮你揭开javascript最神秘的面纱. 为什么要偏偏要讲这两个知识点? 这是我在这么多年…
JS作为发展了多年了对象语言,支持继承,和完全面向对象语言不同的是,JS依赖原型链来实现对象的继承. 首先JS的对象分两大类,函数对象和普通对象,每个对象均内置__proto__属性,在不人为赋值__proto__的前提下,普通__proto__属性指向其构造函数的.prototype属性,例如: var test={}; 此时test.__proto__指向Object.prototype,Object为原型链的顶端,一切对象均可追朔到Object. function money(){}; v…
js原型继承学习笔记 function funcA(){ this.a="prototype a"; } var b=new funcA(); b.a="object a"; //原型中是否有key对应的属性 function hasPrototypeProperty(obj,key){ return !obj.hasOwnProperty(key) && key in obj; } 原型对象 构造函数 每一个对象的实例都有一个原型属性,该属性指向了…
1.js基本类型和对象类型 js的简单类型包括数字(其中NaN为数字类型).字符串(类似'A'为字符,js没字符类型).布尔值.null值和undefined值.其他所有的值都是对象.数字.字符串和布尔值“貌似”是对象,因为它们拥有方法,但它们是不可变的,所以不是对象.js的对象时可变的键控集合(keyed collections).在js中,数组.函数.正则表达式是对象. 2.js原型的重要知识点 首先要知道一个很重要的知识点,一句话:所有对象都有原型对象. 3.对比其他语言的理解 原型对象,…