JS 原型

<!-- ———————————————— JS原型(prototype) ———————————————————— -->
//构造函数模式 (W3C推荐使用)
function Person(name,age,sex){
this.name=name;
this.age=age;
this.sex=sex;
this.sayName=function(){
return this.name;
}
}
var person1=new Person("B",11,"女");
var person2=new Person("C",11,"女");
person1.sayName==person2.sayName;//false
<!-- ——————————————prototype 创建每一个函数都有一个prototype属性,这个属性其实是一个指针,而这个指针总指向一个对象。这个对象的用途是将特定的属性和方法包含在内,起到一个所有实例所共享的作用——————————————-->
function User(){ }
var obj=User.prototype;
obj.name="张三";
obj.age=20;
obj.sayName=function(){
alert(this.name);
}
var user1=new User();
var user2=new User();
user2.sayName==user1.sayName;//true
<!-- ——————————————Object.getPrototype()根据实例对象获得原型对象——————————————-->
var prototypeObj=Object.getPrototype(user1);
prototypeObj==obj;//true
<!-- —————————————— 每次代码读取一个对象的属性的时候:首先会搜索实例对象的属性,如果没有再去实例对象的原型对象去搜索,如果都没有返回undefined ——————————————-->
var p=new User();
p.name="V";
delete p.name;//删除实例对象的name属性
alert(p.name);//张三
<!-- ——————————————判断属性是原型属性还是实例属性——————————————-->
var p2=new User();
p2.hasOwnProperty("name");//false
<!-- ——————————————in 操作符判断属性是否存在于实例对象或原型对象中——————————————-->
alert("name" in p2);
<!-- —————————ECMN5 Object.keys();获得当前对象的所有属性 返回数组——————————————-->
var key=Object.keys(p2);
var key2=Object.keys(User.prototype);
<!-- —————————ECMN5 Object.getOwnPropertyNames()枚举对象的所有属性返回数组——————————————-->
var key=Object.getOwnPropertyNames(User.prototype);

<!--
构造函数.prototype=原型对象
原型对象.constructor=构造函数
实例对象.isPrototypeOf()原型对象
-->

你可能感兴趣的:(js)