接下来的几天,会写一些关于字面量和构造方法的内容。以前写的那么长,同学都说看不下去,我写着累,看着累,改起来累。
所以以后都会写的简短一些。
言归正传,字面量语法模式在JavaScript中更简单,也更具有表现力而且减少了容易出错的对象的定义;
接下来,我们会讨论字面量,如对象字面量,数组字面量,正则表达式字面量和为什么它们比使用等价的内置构造方法更好,如Object(),Array();
引入JSON格式去描述数组和对象字面量是如何去用作数据传输格式;也会讨论传统的构造方法如何强制使用new操作符去构造;
为了扩展,我们会讨论内置的包装器构造方法Number(),String(),Boolean()和它们如何和基本类型number,string和boolean值比较;
最后,我们还会看一个不同的内置的Error()构造函数。
// 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; } };
// 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";正如你从这个例子看到的,对象字面量一个明显的好处就是它更加简洁;
// 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()构造方法的这种行为会导致意想不到的结果;