javaScript面向对象的程序设计(三)——对象创建
2018-09-07 11:08
169 查看
创建对象的过程
function Person(name, age) { this.name = name; this.age = age; } var person = new Person("Marvin", 21);
- 创建一个空对象
var obj = new Object();
- 让Person中的this指向obj,并执行Person的函数体
var result = Person.call(obj);
- 设置原型链,将obj的proto成员指向了Person函数对象的prototype成员对象
obj.__proto__ = Person.prototype;
- 判断Person的返回值类型,如果是值类型,返回obj。如果是引用类型,就返回这个引用类型的对象。
if (typeof(result) == "object") person = result; else person = obj;
创建对象的四种方法
工厂模式
构造函模式
原型模式
混合模式
对象小问题
- 对象的属性的搜索机制
原型对象只分配一次内存
在对象的属性搜索时先搜索自己的属性的列表,假如在属性列表中没有的话就会在自己原型的属性的列表中寻找属性! - 对象属性的屏蔽机制
function Product(){ //属性 this.name='神仙'; // 属性 this.description = '' this.buy = function(){ alert('构造函数对象') } } Product.prototype={ name:'魔鬼', buy:function(){ alert('原型对象') } } var product = new Product() console.log(product.name)// =>'神仙' //屏蔽掉自己构造函数的中的属性 delete product.name console.log(product.name)// => '魔鬼' //屏蔽掉时 console.log(Product.prototype.buy())
单列设计模式
基本模式
//object也称为命名空间【NameSpace】 var object= { name: name, ..... }
高级模式
在给命名空间赋值的时候,先执行一个匿名的函数,形成一个私有的作用域A(不销毁占栈内存),在A中创建一个堆内存,把堆内存地址赋值给命名空间,可以在AA中创建内容
var nameSpace = (function(){ var n = 12; function fn(){ //... } return { fn: fn } })()
作用:把属性和方法进行分组归类(存储在同一空间之中,避免了全局变量之间的冲突)
每个命名空间都是jsObject这个内置基类的实例,而这些实例之间都是相互独立的,互不影响。
阅读更多
相关文章推荐
- JavaScript高级程序设计【面向对象-创建对象】
- JavaScript高级程序设计【面向对象-创建对象2】
- JavaScript高级程序设计之面向对象的程序设计之创建对象之组合使用构造函数模式和原型模式 第6.2.4讲笔记
- JavaScript高级程序设计之面向对象的程序设计之创建对象之工厂模式第6.2.1讲笔记
- JavaScript之面向对象的程序设计1—对象创建方式
- JavaScript高级程序设计之面向对象的程序设计之创建对象之 构造函数模式第6.2.2讲笔记
- 读javascript高级程序设计05-面向对象之创建对象
- JavaScript高级程序设计之面向对象的程序设计之创建对象之寄生构造函数模式 第6.2.6讲笔记
- Javascript高级程序设计——面向对象之创建对象
- JavaScript面向对象的程序设计1(创建对象)
- JavaScript基础——面向对象的程序设计(一)创建对象的几种方式总结
- JavaScript高级程序设计之面向对象的程序设计之创建对象之原型模式 第6.2.3讲笔记
- JavaScript高级程序设计之面向对象的程序设计之创建对象之稳妥构造函数模式 第6.2.7讲笔记
- JavaScript高级程序设计 (6章 创建对象)---读书笔记
- JavaScript面向对象程序设计创建对象的方法分析
- javascript面向对象应该如何创建对象
- javascript 面向对象(多种创建对象的方式)
- 轻松学习JavaScript十二:JavaScript基于面向对象之创建对象(一)
- 全面理解Javascript的面向对象(二)--创建对象与继承
- javascript笔记3-面向对象的程序设计-创建对象