摘要: JS中的继承是通过原型链来体现的。 上面代码中,f1对象是通过Foo函数new出来的,f1.a是f1对象的基本属性,那f1.b是从哪来的呢?——从Foo.prototype得来,f1._proto_ Foo.prototype。 访问一个对象的属性时,现在基本属性中找,如果没有,再沿着_proto_ 阅读全文
posted @ 2018-03-12 20:35 endlessmy 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 对于值类型来说,可以用typeof判断,但typeof判断引用类型的时候返回值只有object/function,并不知道到底是哪一个。这个时候就要用到instance。例如 上图中,f1是被Foo函数创建得,但是“f1 instanceof Object”为什么是true呢? 至于为什么过会儿再说 阅读全文
posted @ 2018-03-12 14:00 endlessmy 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 上文提到,每个函数都有一个prototype属性,即原型。而每个对象都有个_proto_属性,称之为隐式原型。 这个_proto_是一个隐藏的属性。 从上面截图可以看出,obj._proto_和Object.prototype的属性一样 obj这个对象本质上是被Object函数创建的,因此,obj. 阅读全文
posted @ 2018-03-12 13:32 endlessmy 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 上文中提到对象是函数创建得,而函数也是一种对象。对象就是属性的集合,没有方法。 每个函数都有一个属性——prototype。 这个prototype的属性值是一个对象(属性的集合),默认有一个constructor属性,指向这个函数本身。 上图中,superType是一个函数,这个函数有个proto 阅读全文
posted @ 2018-03-12 11:32 endlessmy 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 上文已经提到,函数是对象的一种,因为可以通过instanceof判断。 函数是一种对象,但函数不像数组那样——你可以说数组是对象的一种,因为数组就像对象的一个子集一样。但函数与对象之间却不仅仅是包含与被包含的关系。 先看一个小例子 上面的例子说明:对象可以通过函数来创建 而其中的 Object 和 阅读全文
posted @ 2018-03-12 10:52 endlessmy 阅读(92) 评论(0) 推荐(0) 编辑
摘要: “一切都是对象”这句话的重点在于如何去理解“对象”这个概念。 当然,也不是所有的都是对象,值类型就不是对象。 JS中一个常用的操作符——typeof用来判断数据类型 从以上代码可以看出,undefined、number、string、boolean、null属于简单的值类型,不是对象。剩下的几种情况 阅读全文
posted @ 2018-03-12 10:42 endlessmy 阅读(118) 评论(0) 推荐(0) 编辑