@by Ruth92(转载请注明出处) 第3章:字面量和构造函数 一.创建对象的三种方式 // 对象字面量 var car = {goes: "far"}; // 内置构造函数(反模式) var car = new Object(); car.goes = "far"; // 自定义构造函数 var adam = new Person("Adam"); adam.say(); ☛ 对象字面量的优点: 按需创建对象,在程序生命周期内的任何时候都可以…
一 对象字面量 1.1对象字面量的语法 1,对象键值对哈希表,在其他的编程语言中称之为“关联数组”, 2 键值对里面的值,可以是原始类型也可以是其他类型的对象,称之为属性,函数称之为方法 3 自定义对象的属性和方法是可以改变的,也可以删除 4 将对象包括在大括号中 2,对象中是键值对,键值对与键值对之间使用逗号分隔 3,键值对的键和值使用冒号分隔 1.2.来自构造函数的对象 下面介绍两种创建对象的方法:1,对象字面量:2,使用内置构造函数(反模式)      1,使用字面量创建对象 var ca…
<javascript模式--by Stoyan Stefanov>书摘--基本技巧 http://www.cnblogs.com/liubei/p/JavascriptModeLog1.html <javascript模式--by Stoyan Stefanov>书摘--字面量和构造函数 http://www.cnblogs.com/liubei/p/JavascriptModeLog2.html 书摘连载,持续更新,请后续关注………
二.字面量和构造函数 1,能够使用对象字面量时,就没理由使用new Object构造函数 // 一个空对象var 0 = new Object();console.log( o.constructor === Object ); //true // 一个数值对象var o = new Object(1);console.log( o.constructor === Number ); //true 2.自定义构造函数 可重用的成员,比如可重用方法,都应该放置到对象的原型中 3.构造函数的返回值…
一.基本技巧 1,变量释放的副作用 a.使用var创建的全局变量(在函数外部创建)不能删除. b.不使用var创建的隐含全局变量(尽管在函数内部创建)可以删除. // 定义三个全局变量 var global_var = 1; global_novar = 2; // 反模式 (function(){ global_fromfunc = 3; // 反模式 }()) // 企图删除 delete global_var; // false delete global_novar; // true d…
三.函数 1.函数的命名属性 // IE下不支持name属性 var foo = function bar () { // todo }; foo.name; // "bar" 2.函数的提升 function foo () { alert("global foo") } function bar () { alert("global bar") } function whoIsMe () { console.log(typeof foo); /…
这是字面量和构造函数的最后一篇内容,其中包括了JSON.正则表达式字面量,基本值类型包装器等知识点.也是十分重要的哦. 五.JSON JSON是指JavaScript对象表示以及数据传输格式.它是一种轻量级数据交换格式,且可以很方便地用于多种语言,尤其是在JavaScript中.实际上,对于JSON而言,只是一个数组和对象字面量表示方法的组合: {"name":"value","some":[1,2,3]} JSON和文字对象之间唯一的区别,就是…
新的篇章开始了,本章开始,所有的内容都是十分有价值和意义的.本章主要的内容包括对象字面量.构造函数.数组字面量.正则字面量.基本值类型字面量以及JSON等.在大家的工作和实际应用中也有一定的指导意义. 一.对象字面量 我们直接来先看一下代码: // 开始时定义一个空对象 var dog = {}; // 向dog对象添加一个属性 dog.name = "Benji"; // 现在,向dog对象添加一个方法 dog.getName = function() { return dog.na…
本篇主要讨论了通过字面量以构造对象的方法,比如对象.数组以及正则表达式等字面量的构造方法,同时还讨论了与类似Object()和Array()等内置构造函数相比,为什么基于字面量表示法是更为可取. 对象字面量 JavaScript中并没有类的概念,正如其他动态语言一样,JavaScript中的所有元素均为对象.我们可以把JavaScript中的对象看做是其他语言中的HashTable,即键-值对(key-value pair)哈希表. 在JavaScript中所创建的自定义对象在任何时候都是可变的…
上一篇啊,我们聊了聊字面量对象和自定义构造函数.这一篇,我们继续,来聊聊new和数组字面量. 三.强制使用new的模式 要知道,构造函数,只是一个普通的函数,只不过它却是以new的方式调用.如果在调用构造函数时忘记制定new操作符会发生什么?这并不会导致语法或运行时错误,但可能导致逻辑错误或意外的行为发生.发生这类问题是因为您忘记使用new操作符,从而导致结构函数中的this指向了全局对象(在浏览器中,this会指向window). // 构造函数 function Waffle() { thi…
var proto = ""; function Person(name, age, job) { this.name = name; this.age = age; this.job = job; if (typeof this.sayname != 'function') { //这里不能使用字面量创建原型对象 //Person.prototype.sayname = function() { // console.log("name = " + this.na…
对象字面量 首先给出对象字面量的定义语法: 1. 将对象定义在一对括号中(左大括号“{”和右大括号”}”) 2. 对象中以逗号分隔属性和方法. 每个属性或方法以key-value的形式出现, key和value之间以冒号分割. 3. 当给变量赋值时, 不要忘记或大括号后面的分号 空对象 var obj = {}; 这样就定义了一个空的对象, 但它并非什么也没有, 至少它具有从Object.prototype中继承下来的属性和方法. 来自构造函数的对象 语法: // 反模式, 不推荐这么用 Var…
程序的开发离不开代码的复用,通过代码复用可以减少开发和维护成本,在谈及代码复用的时候,会首先想到继承性,但继承并不是解决代码复用的唯一方式,还有其他的复用模式比如对象组合.本节将会讲解多种继承模式以实现代码复用. 继承复用-默认模式 继承复用-apply函数 继承复用-临时构造 继承复用之默认模式: 每个javascript对象都和另一个对象 相关联,而这个对象就是原型(prototype),而原型又可以链接到其他原型行程原型链,如果当前对象不存在类似方法则会沿原型链查找,直到查找为止.继承的默…
什么是字面量? 在编程语言中,字面量是一种表示值的记法.例如,"Hello, World!" 在许多语言中都表示一个字符串字面量(string literal ),JavaScript也不例外.比如举几个JavaScript字面量的例子,如5.true.false和null,它们分别表示一个整数.两个布尔值和一个空对象. 咋一看,可能很绕,字面量很难下定义,其实以我的理解就是一眼能理解的量就是字面量. 对象字面量 对象字面量是一个名值对列表,每个名值对之间用逗号分隔,并用一个大括号括起…
在编程语言中,字面量是一种表示值的记法.例如,"Hello, World!" 在许多语言中都表示一个字符串字面量(string literal ),JavaScript也不例外. 以下也是JavaScript字面量的例子,如5.true.false和null,它们分别表示一个整数.两个布尔值和一个空对象.JavaScript还支持对象和数组字面量, 允许使用一种简洁而可读的记法来创建数组和对象.考虑以下语句,其中创建了一个包含两个属性的对象(firstName和lastName): v…
JavaScript 对象字面量   JavaScript 对象字面量 在编程语言中,字面量是一种表示值的记法.例如,"Hello, World!" 在许多语言中都表示一个字符串字面量(string literal ),JavaScript也不例外.以下也是JavaScript字面量的例子,如5.true.false和null,它们分别表示一个整数.两个布尔值和一个空对象.JavaScript还支持对象和数组字面量,允许使用一种简洁而可读的记法来创建数组和对象.考虑以下语句,其中创建了…
@by Ruth92(转载请注明出处) 第5章:对象创建模式 JavaScript 是一种简洁明了的语言,并没有其他语言中经常使用的一些特殊语法特征,如 命名空间.模块.包.私有属性 以及 静态成员 等语法. 但是通过常见的模式,可以实现.替换其他语言中的语法特征. 1. 命名空间模式 // 全局变量,不安全 var MYAPP = {}; // 更好的代码风格 if (typeof MYAPP === 'undefined') { var MYAPP = {}; } // 或者用更短的语句 v…
简介 在软件开发过程中,模式是指一个通用问题的解决方案.一个模式不仅仅是一个可以用来复制粘贴的代码解决方案,更多地是提供了一个更好的实践经验.有用的抽象化表示和解决一类问题的模板. 对象有两大类: 本地对象(Native):由ECMAScript标准定义的对象 宿主对象(Host):由宿主环境创建的对象(比如浏览器环境) 本地对象也可以被归类为内置对象(比如Array.Date)或自定义对象(var o = {}). 宿主对象包含window和所有DOM对象.如果你想知道你是否在使用宿主对象,将…
组合使用构造函数模式和原型模式 上篇,我们提到了原型模式的缺点,就是每个实例不能拥有自己的属性,因为纯原型模式所有的属性都是公开给每个实例的,故我们可以组合使用构造函数模式和原型模式.构造函数用来定义实例的属性,而原型模式用来定义方法和公用属性.这样的话,每个实例都有自己的属性副本(而不是指向原型的引用),同时它也共享原型上方法的引用.而且,这种混合模式还支持对构造函数传参,所以可以说是结合了两种模式的优点.示例如下: ```javascript function Animal(name,typ…
引言: 在javascript中创建对象是很容易的,可以使用对象字面量或者构造函数或者object.creat.在接下来的介绍中,我们将越过这些方法去寻求一些其他的对象创建模式. 我们知道js是一种简洁明了的语言,他没有像其他语言所拥有的一些语法特征,比如命名空间,模块,包,私有属性等.那么我们又将如何通过一些模式去实现,替换那些语法特征呢?或者仅以不同于那些语法特征的方式来思考问题? 命名空间模式(namespace) 说白了,就是在应用程序或者库中创建一个全局对像,然后把所有功能添加到改全局…
这是基本技巧的最后一篇内容,这篇内容示例代码并不多.主要是概念比较多一点. 编码约定 确定并一致遵循约定比这个具体约定是什么更为重要. 一.缩进 无论是使用tab还是空格,只要是一致遵循的,是什么并不重要.JSLint的默认值是4个空格来缩进.那么需要对哪些内容进行缩进呢?只需要对大括号中所有的代码进行缩进.主要包含函数体.循环体(do.while.for.for-in).if语句.switch语句和对象字面量引用的属性. 二.大括号 应该经常使用大括号,甚至在可选的情形下,都请使用大括号.从技…
这篇文章我们主要来学习下即时对象初始化.初始化时分支.函数属性-备忘模式以及配置对象.这篇的内容会有点多. 六.即时对象初始化 保护全局作用域不受污染的另一种方法,即时对象初始化模式.这种模式使用带有init()方法的对象,该方法在创建对象后将会立即执行.init()函数需要负责所有的初始化任务. ({ // 在这里可以定义设定值 // 又名配置常数 maxwidth:600, maxheight:400, // 还可以定义一些实用的方法 gimmeMax:function () { retur…
这又是一个新的开始,对象的重要性不言而喻.在JavaScript中创建对象是十分容易的,之前聊过的对象字面量和构造函数都可以达到目的.但是本篇中,我们越过那些方法,以寻求一些额外的对象创建模式. 本篇内容,我们将学到命名空间(namespace),依赖声明(dependency declaration).模块模式(module pattern).沙箱模式(sandbox pattern).它们都可以帮助您组织应用程序代码的结构,并且降低隐含的全局变量带来的后果.其他讨论的主题包括私有和特权成员.…
原文:http://whereswalden.com/2013/08/12/micro-feature-from-es6-now-in-firefox-aurora-and-nightly-binary-and-octal-numbers/ 几年前,当SpiderMonkey实现了严格模式的时候.我了解到,严格模式禁用了八进制整数字面量的写法.因为有证据表明,一些新手会利用前导0来对齐多行中的数字,从而导致意想不到的结果: var sum = 015 + // 相当于十进制的13,而不是15 1…
在编程语言中,字面量是一种表示值的记法.例如,"Hello, World!" 在许多语言中都表示一个字符串字面量(string literal ),JavaScript也不例外.以下也是JavaScript字面量的例子,如5.true.false和null,它们分别表示一个整数.两个布尔 值和一个空对象.JavaScript还支持对象和数组字面量,允许使用一种简洁而可读的记法来创建数组和对象.考虑以下语句,其中创建了一个包含两个属性的对象(firstName和lastName)…
JavaScript 对象字面量 在编程语言中,字面量是一种表示值的记法.例如,"Hello, World!" 在许多语言中都表示一个字符串字面量(string literal ),JavaScript也不例外.以下也是JavaScript字面量的例子,如5.true.false和null,它们分别表示一个整数.两个布尔值和一个空对象. JavaScript还支持对象和数组字面量,允许使用一种简洁而可读的记法来创建数组和对象.考虑以下语句,其中创建了一个包含两个属性的对象(firstN…
JSON与对象字面量相似,仅仅是属性需要使用双引号引号引起. json是描述数据的一种规范 什么是JSON JavaScript Object Notation (JavaScript 对象表示形式) JavaScript的子集 JSON和对象字面量的区别 JSON的属性必须用双引号引号引起来,对象字面量可以省略 var o = {}; 对象字面量 {}JSON var arr = []; //数组的字面量 var arr = new Array(); //使用构造函数创建数组 //使用构造函数…
一.内存中的 String 对象 Java 的堆和栈 对于基本数据类型变量和对象的引用,也就是局部变量表属于栈内存: 而通过 new 关键字和 constructor 创建的对象存放在堆内存: 直接的 "hello" 被称为字面量形式,在JDK1.7之后存放在位于堆内存的独立的常量池中: ```java // 比如说: String s1="hello"; Scanner input = new Scanner(); // 上面的语句中变量名 s1.input 存放…
一.内存中的 String 对象 Java 的堆和栈 对于基本数据类型变量和对象的引用,也就是局部变量表属于栈内存: 而通过 new 关键字和 constructor 创建的对象存放在堆内存: 直接的 "hello" 被称为字面量形式,在JDK1.7之后存放在位于堆内存的独立的常量池中: ```java // 比如说: String s1="hello"; Scanner input = new Scanner(); // 上面的语句中变量名 s1.input 存放…
本文不讨论正则表达式入门,即如何使用正则匹配.讨论的是两种创建正则表达式的优劣和一些细节,最后给出一些常用正则匹配表达式. Javascript中的正则表达式也是对象,我们可以使用两种方法创建正则表达式: 使用new RegExp()构造函数 使用正则表达字面量 先说结果,使用正则表达字面量的效率更高. 下面的示例代码演示了两种可用于创建正则表达式以匹配反斜杠的方法: //正则表达字面量 var re = /\\/gm; //正则构造函数 var reg = new RegExp("\\\\&q…