//here are three ways to implements the basic operation, each way is on the different level in function definition.
/*
* defines the operations in prototype
* usage:
var op = new Operator(10, 20);
op.operate('add');
*/
/*
function Operator(x, y) {
this.x = x;
this.y = y;
}
Operator.prototype.add = function() {
return this.x + this.y;
}
Operator.prototype.subtract = function() {
return this.x - this.y;
}
Operator.prototype.multiply = function() {
return this.x * this.y;
}
Operator.prototype.divide = function() {
return this.x / this.y;
}
Operator.prototype.operate = function(operateclass) {
return this[operateclass](this.x, this.y);
}
*/
/**
* defines the operations in every object instance
* usage:
var op = new Operateor(10, 20);
op.operate('add');
*/
function Operator(x, y) {
this.x = x;
this.y = y;
this.add = add;
this.subtract = subtract;
this.multiply = multiply;
this.divide = divide;
this.operate = operate;
}
function add() {
return this.x + this.y;
}
function subtract() {
return this.x - this.y;
}
function multiply() {
return this.x * this.y;
}
function divide() {
return this.x / this.y;
}
function operate(operateclass) {
return this[operateclass](this.x, this.y);
}
/*
* defines the operations as attributes of the Function object
* usage:
Operator.operate('add', 10, 20);
*/
/*
function Operator() {
}
Operator.add = function(x, y) {
return x + y;
}
Operator.subtract = function(x, y) {
return x - y;
}
Operator.multiply = function(x, y) {
return x * y;
}
Operator.divide = function (x, y) {
return x / y;
}
Operator.operate = function(operateclass, x, y) {
checkArguments(arguments);
return Operator[operateclass](x, y);
}
function checkArguments(args) {
var actual = args.length;
var expected = args.callee.length;
if (actual != expected) {
throw new Error("the expected count of arguments is not equal to the actual!");
}
return true;
}
*/
分享到:
相关推荐
原型链的存在允许对象继承多个层次的属性和方法。每个函数都有一个`prototype`属性,指向原型对象。当我们创建一个新的对象时,这个新对象会继承`prototype`对象的属性和方法。 ```javascript function Person(name...
在ECMAScript 5中,`Object.defineProperty()` 方法提供了一种更精细的方式来控制对象属性的读取和写入行为。例如: ```javascript let obj = {}; Object.defineProperty(obj, 'age', { get: function () { ...
对象由属性(键值对)和方法(函数)组成,可以通过字面量语法或构造函数创建。 8.1.2 对象的构成 创建对象通常有两种方式:字面量语法和构造函数。例如,创建一个名片对象: ```javascript var card = { name: '...
在JavaScript中,面向对象主要基于三个核心概念:对象、原型和构造函数。对象是JavaScript中的基本单位,它们是一组关联的数据(属性)和行为(方法)的集合。你可以通过字面量语法或构造函数来创建对象。 1. 对象...
#### 三、面向对象编程在JavaScript中的应用 虽然JavaScript本身并不是一种传统的面向对象语言,但它通过原型继承机制支持OOP。每个对象都有一个原型,原型可以是一个对象,也可以是一个构造函数。通过这种方式,...
- 日历、时间控件、万年历、动态显示时钟效果等,通常通过创建自定义HTML元素和JavaScript函数实现。 2. 表单类: - 自动生成表单:动态创建HTML元素并绑定事件处理程序。 - 动态添加、修改、删除下拉框元素:...
例如,一个子类可以获取父类的所有属性和方法,这样就实现了代码复用和类层次结构的构建。虽然这种方式在语法上可能不如其他语言直观,但它同样能够提供继承的功能。 最后,多态是指不同的对象可以响应相同的消息...
核心部分主要包括 JavaScript 的数据类型、运算符、表达式,以及 JavaScript 中的内置的全局对象、全局属性和全局函数等。浏览器对象模型提供了用户与浏览器之间的交互的对象以及操作的接口。文档对象模型是由 W3C ...
本文档将详细介绍一系列与JavaScript相关的知识点,包括基本语法、常用方法及自定义函数等内容,旨在帮助开发者更深入地理解和运用JavaScript。 #### 二、基础概念 1. **`document.write("");`** - **描述**:在...
面向对象编程(OOP)是一种编程范式,它将现实世界中的实体抽象成对象,这些对象拥有属性(特征)和方法(行为)。OOP的核心概念包括封装、继承和多态性,它们共同构成了软件设计的基础,旨在提高代码的重用性、模块...
在JavaScript中,面向对象主要体现在构造函数、原型链和实例化三个方面。 1. 构造函数:JavaScript中的构造函数主要用于创建特定类型的对象,通过`new`关键字来调用。例如: ```javascript function Person(name) {...
- **继承**:允许子类继承父类的属性和方法,从而减少代码冗余,提高代码的复用性。 - **封装**:将对象的内部实现细节隐藏,仅暴露必要的接口供外部访问,增强了代码的安全性和可维护性。 - **多态性**:同一接口或...
使用hasOwnProperty方法可以验证一个对象属性是否不是从原型链继承来的。 通过本书的学习,读者将能够理解JavaScript中对象和属性的深层次工作原理,为编写高效、可维护的JavaScript代码打下坚实的基础。...
例如,将相关的属性和方法封装在对象或构造函数中。 - **多态**:指的是同一种行为在不同的对象上可能有不同的表现形式。在JavaScript中,可以通过方法重写等方式来实现多态。 #### 五、总结 JavaScript虽然没有...
这意味着一个对象可以直接继承另一个对象的属性和方法,实现代码的复用。封装则是通过将数据和操作数据的方法结合在一起,形成对象,隐藏实现细节,对外提供简洁的接口。在树形控件的实现中,我们可能会创建一个Tree...
例如,`Array.prototype.forEach()`遍历数组,可以在回调函数中处理每个元素,这可能涉及到修改对象属性或创建新对象。`Object.keys()`返回对象的所有可枚举属性名,可以用于遍历对象。 五、数组与对象的转换 有时...
在探讨JavaScript对象属性(Property)与元素属性(Attribute)及其浏览器支持情况之前,我们需要先理解这两个概念的基本含义以及它们之间的区别。接下来,我们将深入分析这两种属性的特点、应用场景以及不同浏览器...
- **原型链**:通过原型链,对象可以继承其他对象的属性和方法,实现代码复用。 5. **对象的复制**: - **浅拷贝**:只复制对象的表面层次,如 `var copyObj = JSON.parse(JSON.stringify(originalObj))`。 - **...
JavaScript中的`prototype`是一个核心概念,它涉及到对象继承和函数原型。在JavaScript中,每创建一个函数,该函数就会自动获得一个名为`prototype`的属性,这个属性是一个对象,用于实现对象间的继承。同时,每个...