javascriptの创建对象

创建对象的基本方法

var box = new Object();             //创建一个Object对象
box.name = 'Lee';                   //创建一个name属性并赋值
box.age = 100;                      //创建一个age属性并赋值
box.run = function() {              //创建一个run方法并返回值
    return this.name + this.age + "running...";
}
alert(box.run());                   //输出属性和方法的值

上面创建一个对象,并且创建了属性和方法,在run()方法中的this,代表的是box对象本身.这是最基本的创建对象的方法,但有个缺点,想创建一个类似的对象,会产生大量的代码.


工厂模式

解决多个类似对象的声明问题,可解决实例化产生大量代码重复的问题.

function createObject( name, age ) {
    var obj = new Object();
    obj.name = name;
    obj.age = age;
    obj.run = function() {
        return this.name + this.age + "running...";
    };
    return obj;
}

var box1 = createObject('Lee',10);
var box2 = createObject('Mike',20);

工厂模式解决了重复实例化的问题,但是不能解决识别问题,因为根本无法搞清楚他们到底是哪个对象的实例.

alert(typeof box1);                 //Object
alert(box1 instanceof Object);      //true

构造函数

ECMAScript中可以采用构造函数(构造方法)来创建特定的对象.类似于Object对象

function Box(name,age) {
    this.name = name;
    this.age = age;
    this.run = function() {
        return this.name + this.age + 'running...';
    }
}

var box1 = new Box('Lee',10);
var box2 = new Box('Mike',20);

使用构造函数,和使用工厂模式的方法的不同之处在于:

  1. 构造函数方法没有显示的创建对象(new Object());
  2. 直接将属性和方法赋值给this对象
  3. 没有return语句

构造函数的方法的一些规范:

  1. 函数名和实例化构造名相同且大写(非强制)
  2. 通过构造函数创建对象,必须使用new运算符.

构造函数执行的过程:

  1. 当使用了构造函数,并且new构造函数(),那么就后台执行了new Object();
  2. 将构造函数的作用域给新对象,而函数体内的this就代表new Object()出来的对象.
  3. 执行构造函数内的代码.
  4. 返回新对象(后台直接返回)

this

this就是代表当前作用域对象的引用.如果在全局范围this就代表window对象,如果在构造函数体内,就代表当前的构造函数所声明的对象.

读写属性

读取对象的属性,有两种方法,一种是使用点运算符,还有一种是使用方括号运算符.

var o = {
    p : "Hello World"
};
o.p  //"Hello World"
o["p"]  //"Hello World"
删除属性
var o = {p :1};
object.kedys(o)  //["p"]
delete o.p  //true
o.p  //undefined
object.keys(o)  //[]

一旦使用delete命令删除某个属性,再读取该属性就会返回undefined

with语句

格式

with (object)
    statement

它的作用是操作同一个对象的多个属性时,提供一些书写的方便

with (o) {
    p1 = 1;
    p2 = 2;
}

//等同于
o.p1 = 1;
o.p2 = 2;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值