javascriptの创建对象

来源:互联网 发布:日志服务器软件 编辑:程序博客网 时间:2024/06/05 04:17

创建对象的基本方法

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);                 //Objectalert(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  //trueo.p  //undefinedobject.keys(o)  //[]

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

with语句

格式

with (object)    statement

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

with (o) {    p1 = 1;    p2 = 2;}//等同于o.p1 = 1;o.p2 = 2;
0 0
原创粉丝点击