首页 > 编程语言 > 详细

JavaScript模式 读书笔记二

时间:2015-11-04 00:47:10      阅读:263      评论:0      收藏:0      [点我收藏+]

第三章 字面量和构造函数

对象字面量


//开始定义一个空对象
var dog = {};

//向dog对象添加一个属性
dog.name = "Benji";

//现在,向dog对象添加一个方法
dog.getName = function () {
	return dog.name;
}
console.log(dog.getName);
console.log(dog.getName());

dog.getName = function () {
	//重新定义该返回方法
	//返回一个硬编码的值
	return "Lilu";
}
console.log(dog);
console.log(dog.getName);
console.log(dog.getName());

delete dog.name; //删除属性
console.log(dog);


//添加更多的方法和属性 
dog.say = function () {
	return "Woof!";
};
dog.fleas=true;

console.log(dog);



//即使最简单的{}对象也具有从Object.prototype继承的属性和方法
if(typeof Object.prototype.clone==="undefined"){
	Object.prototype.clone=function(){
		alert(‘克隆‘);
	};
}
var dog={};
console.log(dog);
dog.clone()


对象字面量语法

来自构造函数的对象

可以使用自己的构造函数,或使用一些类似Object(),Date(),String()的内置构造函数创建对象



  //第一种方法 使用字面量
  var car={goes:"far"};
  console.log(car);

  //另一种方法 使用内置构造函数
  var car2=new Object();
  car2.goes="far";
  console.log(car2);


  //另一种方法 使用内置构造函数
  var car3=new String();
  car3.goes="far";
  console.log(car3);


  var car4=new Date();
  car4.goes="far";
  console.log(car4);


对象构造函数捕捉

不要使用new Object构造函数,应该使用简单可靠的对象字面量模式。

 //警告:前面的反模式

  //一个空对象
  var o=new Object();
  console.log(o.constructor);
  console.log(o.constructor===Object); //true;

  //一个数值对象
  var o=new Object(1);
  console.log(o.constructor===Number); //true;
  console.log(o.toFixed(2)); // 1.00


  //一个字符串对象
  var o=new Object("I am string");
  console.log(o.constructor===String); //true;

  //一般的对象并没有substring()方法,
  //但是字符串对象都有该方法
  console.log(typeof o.substring); //function 

  //一个布尔对象
  var o=new Object(true);
  console.log(o.constructor===Boolean);//true;


自定义构造函数


//Person构造函数的定义
var Person = function (name) {
	this.name = name;
	this.say = function (){
		return "I am " + this.name;
	};

};

var lilu=new Person("Lilu");
lilu.say(); //输出为I am Lilu
console.log(lilu);
console.log(lilu.say());


代码改进

//Person构造函数的定义
var Person = function (name) {
	this.name = name;
	

};

Person.prototype.say=function(){
	return "I am "+this.name;
}
var lilu=new Person("Lilu");
lilu.say(); //输出为I am Lilu
console.log(lilu);
console.log(lilu.say());



可重用的成员,比如可重用方法都应该放置到对象的原型中。

JavaScript模式 读书笔记二

原文:http://my.oschina.net/lilugirl2005/blog/525551

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!