码迷,mamicode.com
首页 > 其他好文 > 详细

2015-11

时间:2017-05-18 13:26:19      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:构造   pre   obj   显示   改进   ...   属性   prototype   创建   

1、《JavaScript高级程序设计》

  • 变量命名,由于js是弱语言,为了便于阅读,可在变量前加上类型。(个人感觉对于不经常用的人,还是不太好记)如:数组aValues,布尔bValue,整型iValue,对象oType
  • 函数实际上是一个Function对象。但最好不要这样用,慢而且不直观。
function doAdd(iNum) {
    alert(iNum + 100);
}

等价于

doAdd = new Function("iNum", "alert(iNum + 100)");
  • 都有函数都必须是某个对象的方法,即Global对象,但是Global其实是一个不存在的对象,不能显示调用它。
  • 可以给构造函数提供属性和方法。
function sayHi(){
  alert("hi");
}

sayHi.alternate = function(){
  alert("hola");
};

sayHi();
sayHi.alternate();
  •  定义和创建对象

1、工厂方式

function createCar(){
  var oTempCar = new Object;
  oTempCar.doors = 4;
  ...
  oTempCar.run = function(){
  ...
  }
}
var car = createCar();

缺点是每次都会创建自己的函数版本

改进:

function run(){

}

function createCar(){
  var oTempCar = new Object;
  oTempCar.doors = 4;
  ...
  oTempCar.run = run;
}

var car = createCar();

2、构造函数方式

function Car(){
  this.doors = 4;
  ...
  this.run = function(){
  ...
  }
}
var car = new Car();

只是new的时候更像对象类,但是还是会重复创建函数

3、混合的构造函数/原型方式

function Car(){
  this.doors = 4;
  ...
}
Car.prototype.run = function(){
  ...
}

var car = new Car();

4、动态原型法

把方法像java一样写在Car类中。

function Car(){
  this.doors = 4;
  ...
  if(typeof Car._initialized == "undefined"){
       Car.prototype.run =  function(){
      ...
    };
    Car._initialized = true;
  }
}

2015-11

标签:构造   pre   obj   显示   改进   ...   属性   prototype   创建   

原文地址:http://www.cnblogs.com/jieqing/p/4989400.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!