可以用prototype属性为任何已有的类定义新方法
,就像处理自己的类一样。现为Number添加一个转十六进制的方法:
Number.prototype.toHexString = function(){
return this.toString(16);
}
var iNum =15;
alert(iNum.toHexString());//f
如果想给ECMAScript中的每个本地对象添加新方法,必须在Object对象的prototype属性上定义它
。如上一章所述,所有本地对象都继承
了Object对象,所以对Object对象做任何改变,都会反应在所有本地对象中
。例如,如果想添加一个用警告输出对象的当前值的方法,可以采用下面的
代码:
Object.prototype.showValue=function(){
alert(this.valueOf());
}
var str = 'hello';
var iNum=25;
str.showValue();//hello
iNum.showValue();//25
这里,String和Number对象都从Object对象继承了showValue()方法,分别在它们的对象上调用该方法,将显示"hello"和"25"。
就像能给已有的类定义新方法一样,也可重定义已有的方法
。现对Function类的toString()函数重写,原有的toString()是返回Function的源代码 。
var fun = function(){
return 1;
}
alert(fun.toString());//输出上面的源码
Function.prototype.toString = function(){
return 'code hidden';
}
alert(fun.toString());//code hidden
支持晚绑定
从技术上来说,根本不存在极晚绑定。但javaScript能够在对象实例化后再定义它的方法。例如:
var o = new Object();
Object.prototype.sayHi = function(){
alert('hi');
}
o.sayHi();//hi
分享到:
相关推荐
为了扩展或修改已有功能,我们可以让新的类继承`Draggable`。例如,如果我们想要创建一个只能在某个区域内拖动的`ConstrainedDraggable`类,可以这样做: 1. 使用`Prototype`实现继承: ```javascript ...
6. **插件**: jQuery拥有丰富的插件生态系统,1.4版本时,已有许多第三方插件扩展了其功能,如表单处理、轮播图、日期选择器等。 7. **链式调用**: jQuery的API设计为链式调用,提高了代码的可读性和效率,例如:`$...
1. `this.$set()`:这是Vue提供的方法,可以用来添加新的响应式属性到对象,或者更新已存在的属性。 ```javascript this.$set(this.object, 'age', 27) ``` 2. `Object.assign()`:创建一个新的对象,合并原对象...
1. **事件监听**:通过PrototypeJS的`Event.observe`方法,可以方便地监听PickList的按钮点击事件,比如“添加到已选”或“移除已选”。 2. **DOM操作**:PrototypeJS简化了DOM元素的选择、创建和修改。例如,可以...
JavaScript 继承是面向对象编程中的关键概念,它允许创建具有已有对象特性的新对象,实现代码的重用。在JavaScript中,继承并不是基于传统的类,而是基于原型(prototype)。这意味着一个对象可以直接从另一个对象...
- 在HTMLElement对象上绑定事件监听器,如`element.addEventListener('click', function() {...})`,可以响应用户的点击行为。 - 可以使用`event.preventDefault()`阻止默认行为,如链接的跳转。 5. **CSS操作**...
在JavaScript中,继承是面向对象编程的一个核心概念,它允许创建新的对象,这些新对象能够继承已有对象的属性和方法。在本节课程中,我们将深入探讨JavaScript中的继承机制,特别是通过原型链实现的继承。 一、什么...
// 清空已有选项 for (var i = 1; i ; i++) { var op = document.createElement("option"); op.value = i; op.innerHTML = i; this.selDay.appendChild(op); } }; ``` ### 事件监听 当用户更改年份或月份时...
**结构与协作:** 包括Prototype和ConcretePrototype角色,通过复制Prototype实例创建新对象,简化对象创建过程。 ##### Singleton(单件模式) **意图:** 保证一个类仅有一个实例,并提供一个全局访问点。 **...
5. **原型模式(Prototype)**:通过复制已有对象来创建新对象。C#支持对象的深拷贝和浅拷贝,可以用序列化和反序列化实现。 6. **适配器模式(Adapter)**:将两个不兼容的接口转换为一个兼容的接口。在C#中,可以...
原型模式通过复制已有对象来创建新对象,减少了类的实例化次数,提高性能。C#提供了`ICloneable`接口,支持对象的浅复制和深复制。 五、观察者模式(Observer) 观察者模式定义了对象间的一种一对多依赖关系,当一...
5. **原型模式(Prototype)**:通过复制已有对象来创建新对象,减少创建新对象的成本。C#提供了深拷贝和浅拷贝,根据需求选择合适的拷贝方式。 6. **观察者模式(Observer)**:定义对象间的一种一对多的依赖关系...
- 原型模式(Prototype):通过复制已有对象来创建新对象。 2. 结构型模式(Structural Patterns): - 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。 - 外观模式(Facade):为子系统...
- 原型模式(Prototype):通过复制已有对象来创建新对象。 - 工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。 - 抽象工厂模式(Abstract Factory):提供一个创建一...
原型模式通过复制已有对象来创建新对象,避免了重复的构造过程。 4. **结构型模式** 结构型模式关注如何组合类和对象以创建更大的结构。例如,适配器模式(Adapter)使两个不兼容的接口能够协同工作,装饰器模式...
原型模式通过复制已有对象来创建新对象,减少了类的实例化过程。它特别适合于创建那些创建成本较高的对象,例如,如果对象的初始化需要大量资源或者复杂的计算,通过复制一个已经存在的对象可以显著提高效率。 5. *...
原型模式是指通过复制一个已存在的实例来创建新对象的过程。此模式可以用来创建任意复杂的对象,只要能够复制即可。适用于对象的创建代价比较大,例如进行网络通信或者磁盘操作等。 **应用场景:** - 创建对象的...
- **应用场景**:希望复用已有的类,而它的接口不符合要求;想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。 - **优缺点**:优点在于可以使得原本...
6. 使用 `toggleClass`:`.toggleClass()` 方法可以便捷地切换元素的类,如果元素已有该类,则移除;如果没有,则添加。 7. 检测浏览器类型:`$.browser` 对象可以检测用户浏览器类型,但请注意,此特性在 jQuery ...
原型模式是一种创建型设计模式,它允许用户复制已有对象,同时无需知道对象的确切类。 **应用场景:** - 当一个对象初始化成本过高时,可以通过“克隆”操作复制出新对象。 - 当创建对象需要大量资源时,可以通过...