每个对象都有原型,创建对象时可以选择对象的原型方法。
var stooge = { "first-name" : "Jerome",//属性名中如果包含非法的JS标识符或是JS保留字,必须用引号 ,反之可不用引号 "last-name" : "Howard" }
//每个对象都有原型,创建对象时可以选择对象的原型方法。 //给x增加一个beget方法,这个beget方法创建一个使用原有对象的新对象。 var x = {}; if(typeof x.beget !== 'function'){ x.beget = function(o){ var F = function(){} F.prototype = o; return new F(); } }
var another_stooge = x.beget(stooge);//以stooge为原型创建another_stooge对象
//创建方法供html调用
function prototypeMethod(){ //原型连接在更新中不起作用,我们对新对象做出改变时,不会像引用一样对原型对象进行修改 document.getElementById('Prototype1').innerHTML = "修改新对象前属性值:"+another_stooge['first-name']+" "+stooge['first-name'] another_stooge['first-name'] = 'Harry'; document.getElementById('Prototype2').innerHTML = "修改新对象后属性值:"+another_stooge['first-name']+" "+stooge['first-name'] delete another_stooge['first-name']; document.getElementById('Prototype3').innerHTML = "删除新对象属性后值:"+another_stooge['first-name']+" "+stooge['first-name'] //新对象添加属性,不影响原型数据结构 another_stooge.newValue = 'newValue'; document.getElementById('Prototype3').innerHTML = "新对象添加属性,不影响原型数据结构:"+another_stooge['newValue']+" "+stooge['newValue'] //在原型中添加属性,新对象也能获取到 stooge.addValue = 'addValue'; document.getElementById('Prototype4').innerHTML = "在原型中添加属性,新对象也能获取到:"+another_stooge['addValue']+" "+stooge['addValue'] } //注:原型是一种动态关系,个人理解 相当于java的继承关系。
其中HTML中代码为
<input type="button" onclick="prototypeMethod()" value="原型"><br/> <div id='Prototype1'></div> <div id='Prototype2'></div> <div id='Prototype3'></div> <div id='Prototype4'></div>
相关推荐
在JavaScript中,对象是一组无序的属性集合,每个属性都有一个名字和一个值,属性值可以是基本值、对象或函数。通过将功能相同或相似的代码封装在函数中,可以避免重复编码,提高代码的复用性。实现封装的方式包括...
JavaScript中的原型模式是一种实现面向对象编程(OOP)的关键机制,它基于原型继承,使得对象可以从其他对象那里获得属性和方法。在这个模式下,每个函数都有一个`prototype`属性,这个属性是一个对象,用于共享属性...
JavaScript对象参考手册是一份详尽的资源,涵盖了JavaScript编程中的核心概念,特别是关于对象的使用。这份手册旨在帮助开发者深入理解JavaScript对象的本质,提高他们在实际项目中的应用能力。通过链接到的博主...
工厂模式是另一种创建对象的方法,它使用一个函数封装创建对象的细节,该函数可以返回一个具有预定义原型的新对象。工厂模式适用于创建多个具有相似结构但可能有不同属性值的对象。使用工厂模式,可以避免直接与new...
在进行JavaScript编程的过程中,面向对象思想一直是一个核心的概念。面向对象编程(OOP)是通过创建对象来模拟现实世界的一种编程范式。在JavaScript中,对象可以通过不同的方法创建和定义。面向对象有三大基本特性...
JavaScript原型继承是面向对象编程在JavaScript中的实现方式之一,它基于原型(Prototype)和对象的特性,使得一个对象可以继承另一个对象的属性和方法。在JavaScript中,每个对象都有一个特殊的内部属性`[...
4. **原型链**:当试图访问对象的一个属性时,JavaScript会首先在当前对象中查找,如果没有找到,会继续在它的原型对象中查找,直到找到或到达原型链的末端(null)。这就是原型链的工作原理。 5. **继承**:...
接下来,通过创建临时构造函数的一个新实例,并将其赋值给子类的原型,从而使得子类实例可以访问父类原型链上的方法和属性。为了保持构造函数的正确性,需要将子类构造函数的“constructor”属性指向自己,并且将...
1. 构造函数:在JavaScript中,构造函数是一个用来初始化新创建的对象的特殊函数。例如,我们可以定义一个`Plane`构造函数来创建飞机对象,包含飞机的位置、速度等属性,并提供移动、射击等方法。 ```javascript ...
尽管工厂模式可以封装创建过程,但它没有提供识别不同对象的方式,因为每个`showMessage`方法都是独立创建的,不是同一个引用,这增加了内存开销。 接着是构造函数模式。构造函数是一种特殊类型的函数,用于初始化...
每个对象都有一个原型(prototype),原型链的存在使得对象可以访问其他对象的属性和方法。 #### 四、继承与封装 JavaScript的继承机制基于原型链。一个对象可以通过将其原型指向另一个对象来实现继承。这种方式比...
下面是一个简化的例子,展示了如何为`Person`类添加更多属性以及如何使用原型链实现继承: ```javascript function Father(name) { this.name = name; } function Person(name, age, sex, father) { this.name =...
在JavaScript编程中,`hasOwnProperty`方法是一个非常关键的特性,尤其在处理对象属性时。这个方法用于判断一个对象是否包含自定义属性而非原型链上的属性。`hasOwnProperty`是对象自身的非继承方法,这意味着每个...
- **isPrototypeOf()**:检查一个对象是否存在另一个对象的原型链上。 - **propertyIsEnumerable()**:判断对象的指定属性是否可枚举。 #### 4. 日期方法 JavaScript提供了丰富的日期和时间操作功能: - **...
3. **原型链**:当试图访问一个对象的属性时,JavaScript会沿着原型链向上查找,直到找到该属性或者到达原型链的顶端(即`null`)。这使得对象可以共享属性和方法,实现了继承。 4. **属性访问器**:JavaScript提供...
JavaScript中,每个对象都有一个原型对象,可以通过`__proto__`访问(在ES6及以后的版本中推荐使用`Object.getPrototypeOf`)。对象可以通过原型链继承其他对象的属性和方法。虽然这个例子没有涉及继承,但了解这一...
在 JavaScript 中,每个函数都有一个原型(prototype)属性,该属性是一个对象,包含着可以由特定类型的所有实例共享的属性和方法。例如: ```javascript function Person(name, age) { this.name = name; this....
本小册"JavaScript对象经典小册 chm"深入探讨了JavaScript中的核心概念——对象和数组,旨在帮助开发者更好地理解和掌握这些基础知识。 一、JavaScript对象 1. 对象概述:JavaScript对象是一种数据结构,它由键值对...
尽管它在初学者眼中可能显得相对复杂,但理解JavaScript的面向对象编程(OOP)概念对于成为一个熟练的开发者至关重要。在本文中,我们将深入探讨JavaScript中的面向对象支持、类型系统以及`undefined`的特殊性。 ...
在JavaScript编程中,原型(prototype)是一个核心概念,它为对象提供了实现继承的基础。通过使用原型,开发者可以为JavaScript内置对象添加新的方法,这样不仅能够扩展内置对象的功能,还可以保持代码的整洁和重用...