JavaScript里类的相关知识
2017-10-07 20:02
267 查看
function start(a,b){ this.a=a; this.b=b; this.c=function(){ console.log(this.a+this.b); } } var b=new start(1,2)
1.对象
1.1 创建对象
总的说来就三种形式:
直接量:var a={x:0,y:0}
通过new构造函数
通过Object.create()
但细分又有很多种,可以看我的这篇博客
2.原型
每一个JavaScript对象都与另一个对象相关联,“另一个对象”即为原型
通过关键词new+构造函数方式创建的对象的原型就是构造函数的prototype属性值
b.__proto__==start.prototype => true
3.prototype和[[Prototype]]
[[Prototype]],这个是实例中拥有的属性,它是一个指针,指向构造函数的原型,它是“内部的”,这个特性是为了实现Javascript引擎用的,因此在Javascript中不能直接访问它,同时为了表示特性是内部值,用两个方括号加以区分。Firefox,Safari,Chrome在每个对象上面都支持一个
__proto__,可以当做[[Prototype]]。
prototype是构造函数中的属性,它也是一个指针,也指向构造函数原型。但它是可见的。任何js函数都可以作为构造函数,因此每个js函数都会自动拥有一个prototype
b.prototype => undefined b.__proto__ => 输出一个对象 start.prototype => 输出一个对象 var c={}; c.__proto__=b; c.a => 1; b.e=12; c.e=12; start.prototype.what=function(){return this.a*this.b}; b.what() => 2; c.what() => 2;
4.constructor属性
每个js函数都会自动拥有一个prototype属性,该属性的值是一个对象,这个对象包含一个不可枚举属性constructor,而且这个属性的值是一个函数对象
*what属性是上一步添加的
通过构造函数创建的对象会继承这个属性,且属性值指代它们的构造函数
5.类的扩充
如果创建对象之后原型的属性发生改变,也会影响到继承这个原型的所有实例。之前第三小节举的例子就是对类的扩充
6.instanceof运算符
该运算符左操作数是待检测其类的对象,右操作数是定义类的构造函数。如果o继承自c.prototype,则表达式值为true
*未完待续
相关文章推荐
- javascript 字符串相关知识汇总
- JavaScript模块化相关知识
- 关于JavaScript中的new和原型的相关知识总结
- JavaScript(2)jQuery常用操作+CSS相关知识
- JavaScript相关基础知识
- JavaScript 相关知识
- JavaScript 页面坐标相关知识整理
- 详解JavaScript中数组的相关知识
- ASP.NET与JAVASCRIPT相关知识
- javascript中的prototype相关知识(被这个面向对象绕晕了)
- JavaScript计算页面元素位置相关知识
- 从0开始学习ASP.NET(2.0为例)系列——06HTML、CSS、JavaScript相关知识介绍
- javascript 相关知识要点摘要。
- Javascript原型链的原理,JS的__proto__,prototype相关知识!(转)
- JavaScript相关知识
- CSS、JavaScript、html相关知识复习(不定期更新,注定逻辑混乱毫无章法,不适合做入门资料纯当业余吐槽)
- Javascript Dom 相关知识整理
- javascript中对象在OOP方面的一些知识(主要是prototype和__proto__相关)
- javascript表单处理相关的知识总结(一)
- javascript相关基础知识