1. object
//利用内置对象形式创建
var boy = new Object();
//属性
boy.name = '哈哈';
//属性
boy.image = '男性头像';
//属性
boy.HealthPoint_HP = 100;
//属性
boy.MagicPoint_MP = 100;
//技能
boy.technologys =[];
//方法
boy.attack = function(){
}
缺点:重复太多
2.工厂方式(原料加工)
function createPerson(name){
//1.原料
var obj = new Object();
//2.加工
obj.name = name;
obj.HP=100;
obj.MP=100;
obj.technologys=['普通攻击','横扫千军','地狱火','漫天飞雪'];
obj.attack = function(){
alert(obj.name+'发出攻击,导致对方10点伤害值')
};
obj.run = function(){
};
//3.出场
return obj;
}
var boy = createPerson('剑侠客');
boy.attack();
var girl = createPerson('炫舞天使');
girl.attack();
缺点:适用于不用修改任何对象内部的任何值的情况
3.构造函数
var Role =function(name) {
this.name=name;
this.name2={nickName:'小二',accountName:'111111@qq.com'}
this.age=1111;
this.attack=function() {
alert('11111');
}
}
var girl = new Role('宝宝')
缺点:方法是所有实例都一样的,每次实例都重新分配内存,造成内存浪费
4.Prototype创建对象
var Role =function() {}
/*姓名*/
Role.prototype.name={nickName:'小二',accountName:'111111@qq.com'}
/*引用类型有问题*/
var boy = new Role()
boy.name.nickName='小三'
console.log(boy.name.nickName)
var girl = new Role()
girl.name.nickName = '小四'
console.log(boy.name.nickName)-------小四
console.log(girl.name.nickName)------小四
缺点:有些属性,不希望被共享。
5.构造+原型
var Role =function() {
this.name = {nickName:'小二',accountName:'111111@qq.com'};
}
/*姓名*/
//生命值
Role.prototype.HP=100;
//魔法值
Role.prototype.MP=100;
//技能
Role.prototype.technologys=['普通攻击','横扫千军','地狱火','漫天飞雪'];
//跑起来
Role.prototype.run=function() {
alert('run');
}
/*引用类型有问题 -- 通过混合方式解决*/
var boy = new Role()
boy.name.nickName='小三'
console.log(boy.name.nickName)
var girl = new Role()
girl.name.nickName = '小四'
console.log(boy.name.nickName)-------小三
console.log(girl.name.nickName)-------小四
6.拷贝创建对象(遍历A对象的每个属性,以此赋值给另一个空对象)
function extend(tar,source) {
//遍历对象
for(var i in source){
tar[i] = source[i];
}
return tar;
}
7.字面量形式
var boy = {
name:'小二'
,image:'男性头像'
,age:20
,sex:'男'
,HP:100
,MP:100
,technologys:['普通攻击','横扫千军','地狱火','漫天飞雪']
};
//将对象转换成字符串
console.log(JSON.stringify(boy));
//将字符换转换成json对象
var sboy='{"name":"小二","sex":"男","HP":100}';
var objBoy = JSON.parse(sboy);
8.ECMAScript5 新添方法
var person = {
name : "chen",
sayName : function(){
alert(this.name);
}
}
var myPerson = Object.create(person);
myPerson.sayName() //chen
js创建对象的方式
最新推荐文章于 2022-04-08 20:31:39 发布