javascript代码实例教程-js:对象的创建(为prototype做铺垫)

发布时间:2019-02-03 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-js:对象的创建(为prototype做铺垫)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。

/**
*在js中并不存在类,所以可以直接通过Object来创建对象,但是使用这种方式创建有一
*弊端:由于没有类的约束,无法实现对象的重复利用,并且没有一种规范约定,在操作时容易带来问题。
*/
VAR PErson = new Object();
person.name = "octopus";
person.age = 25;
person.say = function(){
alert(this.name+","+this.age);
}

json:json就是js的对象,但是它省去了XML标签,而是通过{}来完成对象的说明。
var person = {
name:"张三",
age:25,
say:function(){
alert(this.name+","+this.age);
}
}

//通过json依然可以创建对象数组,创建方式和js的数组一样。
var ps = [
{name:"张三",age:25},
{name:"李四",age:26}
];
for(var i=0;i alert(ps[i].name);
}
/**
* 创建一组用户,用户的属性有:
* name:String,age:int,friends:Array
* List ps = new ArrayList();
* ps.add(new Person("张三",25,["Ada","Alice"]));
* ps.add(new Person("李四",26,["Ada","Chris"]));
* 把ps转换为json
*/
ps = [
{
name:"张三",
age:25,
friends:["Ada","Alice"]
},
{
name:"李四",
age:26,
friends:["Ada","Chris"]
}
];

//通过工厂的方式来创建对象
function createPerson(name,age){
var o = new Object();
o.name = this.name;
o.age = this.age;
o.say = function(){
alert(this.name+":"+this.age);
}
return o;
}
//使用工厂的方式,虽然有效地解决了类的问题,但是也存在另一个问题:
//我们无法检测对象p1和p2的具体数据类型,用typeof p1/p2 得到的只能是Object。
var p1 = createPerson("Ada",21);
var p2 = createPerson("Leon",23);
p1.say(); //Ada:21
p2.say(); //Leon:23

/**
* 通过构造函数的方式创建,和基于工厂的创建方式类似,
* 最大的区别就是函数的名称就是类的名称,按照Java约定,第一个字母大写,
* 使用构造函数创建时,在函数内部是通过this关键字来完成属性的定义。
*/
function Person(name,age){
this.name = name;
this.age = age;
//这种方式带来的问题是所有的Person对象都会为该行为分配空间
this.say = function(){
alert(this.name+","+this.age);
}
}
//通过Person来创建对象
var p = new Person("octopus",24);
p.say(); //octopus,24
/**
* 使用构造函数的方式可以通过一下方式来检测对象的类型
*/
alert(p1 instanceof Person); //true
alert(p1.say==p2.say); //false
/**但是上述构造函数也会带来一些问题:
* 1.每一个对象中都会存在一个方法的拷贝,如果对象的行为很对的话,空间的占有率就会大大增加
* 解决方法:可以将函数放到全局变量中定义,这样可以让类中的行为指向同一个函数。
*/
function Person(name,age){
this.name = name;
this.age = age;
//这种方式带来的问题是所有的Person对象都会为该行为分配空间
this.say = say;
}

//将行为设置为全局的
function(){
alert(this.name+","+this.age);
}
alert(p1.say==p2.say); //true
//但是如果将行为设置为全局函数的时候,这个函数就可以被window调用,此时就破坏了对象的封装性。
//而且如果很多类用全局的方式定义了大量的方法,容易造成混乱,也将不利于开发。

下节我们学习用原型的方式创建对象。

原创文章转载,请注明出处,本文首发于csdn网站:https://blog.csdn.net/magneto7/article/details/24906045

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-js:对象的创建(为prototype做铺垫)全部内容,希望文章能够帮你解决javascript代码实例教程-js:对象的创建(为prototype做铺垫)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。