JS设计模式-对象基础

Object的创建,三种方法
  1\ var newObject={};//字面值
  2\ var newObject=Object.create(Object.prorotype);//根据原型创建
  3\ var newObject=new Object();//new 关键字
属性值的创建
  1\  newObject.someKey="Hello World";
  2\  newObject["someKey"]="Hello World";
  3\  Object.defineProperty(newObject,"someKey",{
       value:"for more control of the property's behavior",
       writable:true,
       enumerable:true,
       configurable:true
     })
     //函数式
      var defineProp=function(){
        var config={
          value:value,
          writable:true,
          enumerable:true,
          configurable:true
        }
        Object.defineProperty(obj,key,config);
      }
  4\ Object.defineProperties(newObject,{
      "someKey":{
        value:"Hello World",
        writable:true
      },
      "anotherKey":{
        value:"Foo bar",
        writable:false
      }
    })  
构造函数
  function Car(model,year,miles){
    this.model=model;
    this.year=year;
    this.miles=miles;
    this.toString=function(){
    return this.model+"had done"+this.miles+"miles";
    }
  }
  var civic=new Car('Huayra',2010,5000);
重写方法
  Car.prorotype.toString=function(){
    return this.model+"had done"+this.miles+"miles";
  }

这里主要介绍了一些创建对象和重写对象的方法。几点小的说明:

prototype为大家很熟悉的一个对象,在本对象内寻找方法没有结果的时候,则会向prototype所指向的对象搜寻属性,跟指针太像了,仍无调用属性亦向prototype所指对象内搜寻,如果仍未找到,则返回undifined。此为js面向对象的一个起点。

defineProperty可以对对象的属性进行一些约束,过去不太常用。签字为:Object.defineProperty(obj,prop,descriptor);需要注意的一点是此方法属于ECMA5规范,在IE89系列中,对DOM元素有支持,还有一些怪癖特性。MOZ和Chrome不用担心太多。

descriptor中包含: configurable可配置,代表此属性可配置;

          enumerable可枚举,简单的来说就是可以使用for in语句访问到的,想了解更多可以谷歌枚举和迭代器原理

          value赋值

          writable可以用赋值运算符改变

          get

          set 这两个属性提供存取器,可以在函数内对存取进行一些操作

          上面这些属性默认情况下为undefinedfalse

          可要注意的一点是get和value同时出现的话会有一些冲突。

 

 

 

posted @ 2014-07-12 10:48  Enterprise_  阅读(142)  评论(0)    收藏  举报