[JS]如何理解JS中的类和对象

王朝学院·作者佚名  2016-05-23
窄屏简体版  字體: 小  |  中  |  大  |  超大  

[JS]如何理解JS中的类和对象--------------------------------------------------------------------------------------------

变量:自由的=>属性:属于一个对象

函数:自由的=>方法:属于一个对象

函数:

function a()

{

console.log('a');

}

方法:

var arr = [1, 2, 3, 4];

arr.a = function()

{

console.log('a');

}

===================================================

简单的例子:

var arr = new Array(1, 2, 3);

这里的Array就是类,arr就是对象。

理解this:

arr = [1, 2, 3, 4];

arr.a = 5;

arr.showA = function()

{

console.log(this.a);//this为arr

}

oDiv.onclick = function()

{

console.log(this);//this为oDiv

}

this:当前发生事件的对象,当前方法属于谁就代表谁。

===================================================

混合方式构造对象:

原则=>构造函数:加属性

原型:加方法

对象命名规范=>类名首字母大写

function CreatePerson(name, sex)//构造函数

{

//成员属性

this.name = name,

this.sex = sex,

}

CreatePerson.PRototype.showName = function()//在原型里加方法

{

console.log('My Name Is ' + this.name);

}

CreatePerson.prototype.showSex = function()

{

console.log('My Sex Is ' + this.sex);

}

var obj = new CreatePerson('Cw', 'male');

var obj2 = new CreatePerson('Girl', 'female');

console.log(obj.showName == obj2.showName); //true;

//同一方法,不同对象,如果不使用原型添加则不相等

//原型属于类,在对象中加入自己的属性、方法,原型修改将对已有对象产生影响。

//给对象添加方法,影响当前; 给原型添加方法,影响一类。原型的缺陷:无法限制覆盖。

===================================================

为对象添加方法和属性(注意):

事件处理中this的本质=>window

方法属于谁

不能在系统对象中随意附加方法、属性,否则会覆盖已有方法、属性。

object对象(空的)

其它对象:Date,Array,RegExp

function createPerson(name, sex)//构造函数

{

var obj = new Object();//创建对象

obj.name = 'Cw'; //添加

obj.sex = 'male';

obj.showName = function()

{

console.log('My Name Is ' + this.name);

}

obj.showSex = function()

{

console.log('My Sex Is ' + this.sex);

}

obj.showName();

obj.showSex();

return obj;//返回对象

}

var obj = createPerson('Cw', 'male');

obj.showName();

obj.showSex();

缺点:如果要创建多个对象,多次调用方法,对象方法重复创建。

===================================================

工厂方式:调用函数前加new,系统自动创建一个空对象并返回

function createPerson(name, sex)

{

this.name = 'Cw';

this.sex = 'male';

this.showName = function()

{

console.log('My Name Is ' + this.name);

}

}

var obj = new createPerson('Cw', 'male');

原型的使用:

var arr = new Array(12, 13);

var arr2 = new Array(14, 15);

Array.prototype.sum = function()

{

var result = 0;

for(var i = 0; i < this.length; i++)

{

result += this[i];

}

return result;

}

console.log(arr.sum());

console.log(arr2.sum());

Link:http://www.cnblogs.com/farwish/p/4055675.html

------------------------------------www.farwish.com------------------------------------

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航