创建对象的方法(封装)
蓝色清晨_
不经一番寒彻骨,怎得梅花扑鼻香。
展开
-
js封装代码的两种形式-实例
为什么要进行代码封装?在平时的生产环境中,我们经常写出这样的代码:function fAdd(iA,iB) { return iA + iB;}function fMud(iA,iB) { return iA - iB;}其本质上是这样的:var fAdd = function (iA,iB) { return iA + iB;}var fMud = function (iA,iB) { return iA - iB;}这样的话,我们就创建了两个原创 2020-06-05 13:39:24 · 643 阅读 · 0 评论 -
更简单的原型语法
function Person(){}Person.prototype.name = “Nicholas”;Person.prototype.age = 29;Person.prototype.job = “Software Engineer”;Person.prototype.sayName = function(){alert(this.name);};前面例子中每添加一个属性...原创 2020-04-24 11:26:18 · 138 阅读 · 0 评论 -
原生对象的原型
原型模式的重要性不仅体现在创建自定义类型方面,就连所有原生的引用类型,都是采用这种模式创建的。所有原生引用类型(Object,Array,String,等等)都是在其构造函数的原型上定义了方法,例如Array.prototype中可以找到sort()方法,而在String.prototype中可以找到substring()方法,如下所示。console.log(Array.prototype);...原创 2020-04-24 11:24:24 · 149 阅读 · 0 评论 -
原型的动态性
由于在原型中查找值的过程是一次搜索,因此我们对原型对象所做的任何修改都能够立即从实例上反应出来–即使是先创建了实例后修改原型也照样如此。请看下面的例子.var friend = new Person();function Person(){}Person.prototype.sayHi = function () { console.log("Hi")}friend.sayH...原创 2020-04-24 11:22:53 · 243 阅读 · 0 评论 -
原型与in操作符
有两种方式使用in操作符:单独使用和在for-in循环中使用。在单独使用时,in操作符会在通过对象能够访问给定属性时返回true,无论该属性存在于实例中还是原型中。看一看下面的例子。//定义一个空的构造函数function Person(){}//将属性和方法添加到构造函数的原型对象中Person.prototype.name = "李白";Person.prototype.age...原创 2020-04-24 11:20:56 · 252 阅读 · 0 评论 -
理解原型对象
function Person(){}Person.prototype = { constructor : Person, name : "LiBai", age : 60, job : "诗人", friends : ["杜甫","白居易"], sayName : function () { console.log(this...原创 2020-04-24 11:19:34 · 147 阅读 · 0 评论 -
创建对象之七:稳妥构造函数模式
所谓稳妥对象,指的是没有公共属性,而且其方法也不引用this对象。稳妥对象最适合在一些安全的环境中(这些环境中会禁止使用this和new),或者在防止数据被其他应用程序(如Mashup程序)改动时使用。 稳妥构造函数遵循与寄生构造函数类似的模式,但有两点不同:一是新创建对象的实例方法不引用this;而是不使用new操作符调用构造函数。 按照稳妥构造函数的要求,可以将前面的Person构造函数改写如...原创 2020-04-17 22:48:09 · 157 阅读 · 1 评论 -
创建对象之六:寄生构造函数模式
通常,在前述的几种模式都不适用的情况下,可以使用寄生(parasitic)构造函数模式。这种模式的基本思想是创建一个函数,该函数的作用仅仅是封装创建对象的代码,然后再返回新创建的对象;但从表面上看,这个函数又很像是典型的构造函数。下面是一个例子: function Person(name,age,job){ var o = new Object(); o.n...转载 2020-04-17 22:45:19 · 253 阅读 · 0 评论 -
创建对象之五:使用构造函数模式与原型模式(最优模式)
创建构造函数最常见的方式就是组合使用构造函数模式与原型模式。构造函数模式用于定义实例属性,而原型模式用于定义方法和共享的属性。 结果,每个实例都会有自己的一份实例属性的副本,但同时又共享着对方法的引用,最大限度地节省了内存。另外,这种混成模式还支持向构造函数传递参数;可谓集两种模式之长。 //构造函数模式定义实例属性 function Person(name,age,job){ ...转载 2020-04-17 22:40:49 · 208 阅读 · 0 评论 -
创建对象之四:动态原型模式
有其他OO语言经验的开发人员在看到独立的构造函数和原型时,很可能会感到非常困惑。动态原型模式正是致力于解决这个问题的一个方案,它把所有的信息都封装在了构造函数中,而通过在构造函数中初始化原型(仅在必要的情况下),又保持了同时使用构造函数和原型的优点。换句话说,可以通过检查某个应该存在的方法是否有效,来决定是否需要初始化原型。 function Person(name,age,job){...转载 2020-04-17 22:38:15 · 231 阅读 · 0 评论 -
创建对象之三:原型模式
我们创建的每一个函数都有一个prototype属性,这个属性是一个指针,指向一个对象,而这个对象包含所有实例共享的属性和方法。按照字面意思来理解,prototype就是通过调用构造函数而创建的那个对象的原型对象。使用原型对象的好处是:可以让所有的对象实例共享它所包含的属性和方法。换句话说,不必在构造函数中定义对象实例的信息,而是将这些信息直接添加到原型对象中,如下面的例子: //定义一个空...原创 2020-04-17 22:34:51 · 152 阅读 · 0 评论 -
创建对象之二:构造函数模式
第二种方式:构造函数模式创建对象(工厂模式和构造函数模式的主要区别是:构造函数的名字的首字母要大写) function CreatePerson(name,age,job){ this.name = name; this.age = age; this.job = job; this.sayName = function ()...原创 2020-04-08 22:39:22 · 209 阅读 · 0 评论 -
创建对象之一:工厂模式
创建(封装)可复用的函数,第一种方式:工厂模式 //工厂模式 function createPerson(name,age,job){ var o = new Object(); o.name= name; o.age = age; o.job = job; o.sayName = function(...原创 2020-04-08 22:35:11 · 135 阅读 · 0 评论 -
创建对象之:创建单例对象
我们知道创建自定义对象的方式有两种:一:通过字面量创建对象,二:通过构造函数创建对象;通过字面量创建对象,并为它添加三个属性和一个方法: var person = { name: "李白", age: 50, job: "诗人", sayName: function(){ ...原创 2020-04-08 22:33:13 · 590 阅读 · 0 评论