面向对象

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
喜欢就支持一下吧
点赞0 分享