▶ javascript prototype属性使我们有能力向对象添加属性和方法;
object.prototype.name=value;
实例:
<script type="text/javascript"> function employee(name,job,born) { this.name=name; this.job=job; this.born=born; } var bill=new employee("Bill Gates","Engineer",1985); employee.prototype.salary=null; bill.salary=20000; document.write(bill.salary); </script>
▶ instanceof 用于检测constructor.prototype是否存在于参数object的原型链上.
▶ 原型链 感谢(详细)网址(https://www.cnblogs.com/chuaWeb/p/5039232.html)
JavaScript 是面向对象的语言,但是他的面向对象不是基于类的,是基于原型的。
▶javascript"类"
感谢http://www.ruanyifeng.com/blog/2012/07/three_ways_to_define_a_javascript_class.html
Javascript语言不支持"类",但是可以用一些变通的方法,模拟出"类"。
1.构造函数法:
function Cat(){this.name="大毛";} //构造函数
var cat1 = new Cat(); //生成实例
js封装: http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_encapsulation.html
一个对象里封装两个属性, 构造函数, 实例里含有有个constructor指向他们的构造函数; js提供了一个instanceof运算符验证原型对象和实例对象之间的关系. 为解决内存占用过大的问题,js每个构造函数都有一个prototype属性(可能类似于c++/java中的继承). 对象实例可以用hasOwnProperty()方法判断属性是本地属性还是继承自prototype对象的属性. in运算符判断该实例是否有某个属性, 也可以遍历所有的属性.
2.Object.creat()法