js面向对象
简单封装对象
var dog = {
name:'旺财',
color:'黄色'
}
var dog1 = {}
dog1.name = '来福';
dog1.color = '白色';
复制代码
函数对象
function Dog(name,color){
return{
name:name,
color:color
}
}
var dog3 = Dog('来福','黄色');
var dog3 = Dog('旺财','黑色');
复制代码
封装对象
function GetDog(name,color){
this.name = name;
this.color = color;
}
var dog5 = new GetDog('嘤嘤嘤','粉色');
所谓"构造函数",其实就是一个普通函数,但是内部使用了this变量。对构造函数使用new运算符,就能生成实例,并且this变量会绑定在实例对象上。
复制代码
构造函数 (prototype)
Javascript规定,每一个构造函数都有一个prototype属性,指向另一个对象。这个对象 的所有属性和方法,都会被构造函数的实例继承。
这意味着,我们可以把那些不变的属性和方法,直接定义在prototype对象上。
function GetDog2(name,color){
this.name = name;
this.color = color;
}
GetDog2.prototype.type = '犬科动物';
GetDog2.prototype.eat = function(){alert('爱吃骨头')};
dog7 = new GetDog2('大大','黑白色')
isPrototypeOf():这个方法用来判断,某个proptotype对象和某个实例之间的关系
hasOwnproperty():用来判断某一个属性到底是本地属性,还是继承自prototype对象的属性。
in:运算符可以用来判断,某个实例是否含有某个属性,不管是不是本地属性。也可以用来遍历对象属性。
复制代码
对象的继承 (call 或者 apply)
1.使用call 或者 apply 来进行继承
call()定义:调用一个对象的一个方法,以另一个对象替换当前对象。
arguments是一个特殊对象,一般用于代替未名的实参,使用方法类似对象arguments[i]。
也可使用arguments.lenght来获取参数的个数
2.使用prototype属性来完成
Dog.prototype = new Animal();//将Dog的prototype对象指向一个Anima的实例
任何一个prototype对象都有一个constructor属性,指向它的构造函数。
任何一个prototype对象都有一个constructor属性,指向它的构造函数。因此,在运行"Dog.prototype = new Animal();"这一行之后,dog2.constructor也指向Animal!
因此我们必须手动纠正,将Dog.prototype对象的constructor值改为Dog
因此我们必须手动纠正,将Dog.prototype对象的constructor值改为Dog
Dog.prototype.constructor = Dog;
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END