接下来的几天,会写一些关于字面量和构造方法的内容。以前写的那么长,同学都说看不下去,我写着累,看着累,改起来累。
所以以后都会写的简短一些。
言归正传,字面量语法模式在JavaScript中更简单,也更具有表现力而且减少了容易出错的对象的定义;
接下来,我们会讨论字面量,如对象字面量,数组字面量,正则表达式字面量和为什么它们比使用等价的内置构造方法更好,如Object(),Array();
引入JSON格式去描述数组和对象字面量是如何去用作数据传输格式;也会讨论传统的构造方法如何强制使用new操作符去构造;
为了扩展,我们会讨论内置的包装器构造方法Number(),String(),Boolean()和它们如何和基本类型number,string和boolean值比较;
最后,我们还会看一个不同的内置的Error()构造函数。
对象字面量(Object Literal)
// start with an empty object
var dog = {};
// add one property
dog.name = "Benji";
// now add a method
dog.getName = function() {
return dog.name;
};
dog.getName = function() {
// redefine the method to return
// a hardcoded value
return "Fido";
};
2.完全移除属性或方法delete dog.name;
3.添加更多的属性和方法dog.say = function () {
return "Woof!";
};
dog.fleas = true;
var dog = {
name: "Benji",
getName: function() {
return this.name;
}
};
声明:目前为止,我们经常看到空对象(“blank object” and “empty object”);这都是为了简单起见,在JavaScript中没空对象;
对象字面量语法(The Object Literal Syntax)
从构造方法获取对象(Objects from a Constructor)
// one way -- using a literal
var car = {goes: "far"};
// another way -- using a built-in constructor
// warning: this is an antipattern
var car = new Object();
car.goes = "far";
正如你从这个例子看到的,对象字面量一个明显的好处就是它更加简洁;了解Object 构造方法(Object Constructor Catch)
// Warning: antipatterns ahead
// an empty object
var o = new Object();
console.log(o.constructor === Object); // true
// a number object
var o = new Object(1);
console.log(o.constructor === Number); // true
console.log(o.toFixed(2)); // "1.00"
// a string object
var o = new Object("I am a string");
console.log(o.constructor === String); // true
// normal objects don't have a substring()
// method but string objects do
console.log(typeof o.substring); // "function"
// a boolean object
var o = new Object(true);
console.log(o.constructor === Boolean); // true
当传入的值是动态的直到运行的时候才能知道的时候,Object()构造方法的这种行为会导致意想不到的结果;