细看javascript创建对象模式的诞生,具体的脉络为:不使用任何模式——工厂模式——构造函数模式——原型模式——组合使用构造函数模式——动态原型模式——寄生构造函数模式——稳妥构造函数模式.每一种模式都是为了解决一定的问题而诞生的,都有自己的缺陷和优势.下面我们来一一介绍: 一.不使用任何模式 javascript中创建对象的方式有以下两种: //使用new Object构造函数 var person = new Object(); person.name = "Lillian";…
1. 对象字面量 通过这种方式创建对象极为简单,将属性名用引号括起来,再将属性名和属性值之间以冒号分隔,各属性名值对之后用逗号隔开,最后一个属性不用逗号隔开,所有的属性名值对用大括号括起来,像这样: var o={"name":"yangyule","age":23,"sex":"male"}; 属性名的引号可以是单引号也可以是双引号,大多数的时候属性名可以不加引号,但如果属性名为JavaScript关键字…
一.工厂模式 function createPerson(name,age){ var o = {}; o.name = name; o.age = age; o.sayHi = function(){ alert('my name is' + this.name); }; return o; } var p1 = createPerson('小明',10); var p2 = createPerson('小红',9); p1.sayHi(); p2.sayHi(); console.log(p…
函数表达式 1.函数表达式的特征: 定义函数的方式有两种:一种是函数声明,另一种就是函数表达式.函数声明的语法是这样的: function  functionName(arg0,arg1,arg2){ //函数体 } 首先是函数function关键字,然后是函数的名字,这就是指定函数名的方式.关于函数声明,它的一个重要特征就是函数声明提升,意思是在执行代码之前会先读取函数声明.这就意味着可以把函数声明放在调用它的语句后面. sayHi(): function  sayHi(){ alert(“H…
第五章 引用类型(三) 今天首先说的就是Function类型.下面就是定义函数的两种方法,第一种使用函数声明语法定义,第二种使用函数表达式定义.这两种定义函数的方式几乎没有什么区别. function func1() {} var func2 = function() {} console.log(typeof(func1)); //function console.log(typeof(func2)); //function 非要说区别就如下面代码所示.在执行JavaScript前会对申明的变…
7.1 递归7.2 闭包 7.2.1 闭包与变量 7.2.2 关于this 对象 7.2.3 内存泄漏 7.3 模仿块级作用域7.4 私有变量 7.4.1 静态私有变量 7.4.2 模块模式 7.4.3 增强的模块模式   书上给的例子是:(还有一个用argument.callee的,但是在严格模式下 strict mode,无法访问这个属性)   var factorial = (function f(num){ if (num <= 1){ return 1; } else { return…
使用字面量方式创建一个 student 对象: var student = function (){ name : "redjoy", age : 21, sex: women, sayName: function(){ alert(this.name); } }; 使用Object.defineProperties() 方法给对象添加属性:(只有IE9+,FF4+,SF5+,OP 12+,Chrome支持) var student = {}; Object.definePropert…
<Javascript高级程序设计>中,2-7章中已经涵盖了大部分精华内容,所以摘录到博客中,方便随时回忆.本系列基本完成,之后的章节,可能看情况进行摘录. 这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 <Javascript高级程序设计>阅读记录(三):第五章 上 <Javascript高级程序设计>阅读记录(四):第五章 下 <Java…
转自:xxxgitone.github.io/2017/06/10/JavaScript创建对象的七种方式/ JavaScript创建对象的方式有很多,通过Object构造函数或对象字面量的方式也可以创建单个对象,显然这两种方式会产生大量的重复代码,并不适合量产.接下来介绍七种非常经典的创建对象的方式,他们也各有优缺点. 工厂模式 function createPerson(name, job) { var o = new Object() o.name = name o.job = job o…
构造函数模式 实现方式: function Person(name, age, job) { this.name = name; this.age = age; this.job = job; this.sayName = function() { return this.name } } // 测试 var person = new Person('Nicholas', 29, 'Engineer'); // 检测对象类型 console.log(person.constructor ===…