1.增:
1.向对象添加属性和方法 (私有) ---> obj.属性 ="";
2.向对象原型添加方法 (公共) ---> obj.prototype.属性 = "";
2.删
1.delete obj.属性名
2.delete obj.prototype.属性名
3.查
1. obj.hasOwnProperty(‘属性名") ---> 检查自有属性
2. obj.isPrototypeOf("属性名") ---> 检查原型链
3. "属性名" in obj ---> 检查原型链
原型链:由每个对象的__proto__属性连续引用形成的多级关系
4.改 子对象的父对象
1. 单独修改一个 Object.setPrototypeOf(子对象,父对象)
2.修改构造的原型对象 构造函数.Prototype = 父对象
ps:对已通过构造函数创建的对象没有影响
3.创建对象的同时修改父对象 var newObj = Object.create(父对象)
重写:*子对象觉得父对象的方法不好用*
自己定义同名的,但不同实现的方法
call和apply: 在调用时,临时更换调用方法的对象!
要调用的方法.apply(替换对象,[参数值列表])
要调用的方法.call(替换对象,参数值1,...)
function fun(name,age){ this.name = name, this.age = age, this.aa = function(){ alert(this.age); } } function student (name,age,sex){ //调用fun时,临时把this指向了student fun.apply(this,arguments); this.show = function(){ alert(name+age+sex); } } var s = new student("yun",22,"男"); console.log(s.show());
时间: 2024-10-07 21:04:19