借用别的类的方法
/** * Created by Administrator on 2015/12/23. */ //====================借用方法=============================== function borrowMethods(borrowFrom,addTo){ var from = borrowFrom.prototype; var to = addTo.prototype; for(m in from){ if(typeof from[m]!="function"){ continue; } to[m] = from[m]; } } // 带有通用的toString()方法的类 function GenericToString(){} GenericToString.prototype.toString = function(){ var props = []; for(var name in this){ if(!this.hasOwnProperty(name)) continue; var value = this[name]; var s = name+":"; switch (typeof value){ case "function": s+="function"; break; case "object": if(value instanceof Array) s+="array"; else s+=value.toString(); break; default : s += String(value); break; } props.push(s); } var str = ""; if(props.length>0){ str+="["; for(i=0;i<props.length;i++){ str += props[i]; if(i<props.length-1){ str+=","; } } str +="]"; } return str; } // 带有通用的equals()方法的类 function GenericEquals(){} GenericEquals.prototype.equals = function(that){ if(this == that){ return true; } var propsInThat = 0; for(var name in that){ propsInThat++; //如果属性值不相同,返回false if(this[name]!==that[name]){ return false; } } var propsInThis =0; for(name in this) propsInThis ++; //判断属性个数是否相等 if(propsInThat != propsInThis){ return false; } return true; } //声明Rectangle类 function Rectangle(w, h) { this.width = w; this.height = h; } Rectangle.prototype.area = function () { return this.width * this.height; } borrowMethods(GenericToString,Rectangle); borrowMethods(GenericEquals,Rectangle); var rectangle = new Rectangle(50,100); console.log(rectangle.toString()); console.log(rectangle instanceof Object); console.log(rectangle instanceof Rectangle); console.log(rectangle.constructor == Object); console.log(rectangle.constructor == Rectangle);
d
相关推荐
在JavaScript中借用方法 在JavaScript中,有时可以重用其它对象的函数或方法,而不一定非得是对象本身或原型上定义的。通过 call()、apply() 和 bind() 方法,我们可轻易地借用其它对象的方法,而无须继承这些对象。...
在JavaScript中,虽然原生语言层面没有提供传统意义上的“类”这一概念,但它通过构造函数和原型链等机制实现了类的功能,尤其是继承这一核心概念。继承是面向对象编程的一个基本特征,它允许一个类(子类)继承另一...
类式继承模式#3——借用和设置原型 类式继承模式#4——共享原型 类式继承模式#5——临时构造函数 Klass 原型继承 通过复制属性实现继承 借用方法 小结 第7章 设计模式 单体模式 工厂模式 ...
书中还涵盖了JavaScript中的混入模式和方法借用,这些高级编程技巧能够让代码复用变得更加有效。 在测试方面,本书指导读者如何测试复杂的程序架构以及如何访问DOM。同时,还重点介绍了如何确保代码遵循标准规范,...
本文将深入探讨JavaScript中的对象创建方式,包括类和继承的概念。 首先,让我们从最基础的创建对象的方式开始。在JavaScript中,可以使用字面量语法来创建一个简单的对象: ```javascript var obj = { name: '...
JavaScript中的类数组对象,也称为伪数组,是与标准数组类似但不完全符合数组特性的对象。它们在结构上相似,具有`length`属性,可以使用`for`循环进行遍历,但不拥有数组的内置方法,比如`push`, `slice`, `concat`...
- **构造函数继承**:在子类构造函数中调用父类构造函数,通过借用构造函数的方式继承父类的属性和方法。 #### 六、JavaScript中的多态 多态是指同样的方法在不同对象上表现不同的行为。在JavaScript中,多态可以...
在JavaScript中,面向对象编程(OOP)的概念虽然存在,但是它的实现与传统基于类的语言有所不同。ECMAScript,也就是JavaScript的语言规范,支持两种开发模式:函数式(过程化)和面向对象(OOP)。面向对象编程语言...
**构造函数模式**是JavaScript中的核心概念,它允许我们创建具有特定属性和方法的对象。然而,简单的构造函数不能实现继承,因此书中详细探讨了如何通过原型链、借用构造函数和组合使用这两种方式来实现**继承**。 ...
在JavaScript中,继承是面向对象编程的一个核心概念,它允许我们创建具有新特性的对象,同时保持原有对象的属性和方法。传统的继承模式包括原型链继承、构造函数继承(也称为经典继承)等。而借用构造函数继承(也...
7. **ES6及后续版本的新特性**:ECMAScript(ES)是JavaScript的标准,ES6(也称ES2015)引入了类、箭头函数、模板字符串、解构赋值等新特性。后续的ES7、ES8等版本继续增加了更多的功能,如async/await、Promise....
JavaScript是基于原型的面向对象语言,你需要了解构造函数、原型链、对象属性与方法、继承机制(原型链继承、借用构造函数、组合继承、寄生组合继承、原型式继承、ES6的类)。此外,还要掌握闭包和作用域,这是...
8. **ES6及以后的新特性**:包括箭头函数、模板字符串、解构赋值、类(class)、模块(import/export)、生成器(generator)和async/await等,这些都是现代JavaScript开发的重要组成部分。 9. **前端框架与库**:...
JavaScript是由Netscape公司的Brendan Eich在1995年开发的,最初被命名为Mocha,后来更名为LiveScript,最终在Netscape Navigator浏览器中发布时命名为JavaScript,以借用当时流行的Java语言的名气。尽管名字相似,...
一种实现继承的方式是通过构造函数的调用来“借用”另一个构造函数的属性和方法。 ```javascript function classA(name) { this.name = name; this.sayHello = function() { alert(this.name); } } function ...
后来,为了借用Java的知名度,改名为JavaScript,但与Java并无直接关系。它是一种解释型、弱类型、基于原型的语言,支持事件驱动、函数式和面向对象的编程风格。 本书的第6版涵盖了以下关键知识点: 1. **基础语法...
4. 函数:JavaScript中的函数是第一类对象,可以作为参数传递,也可以作为其他函数的返回值。函数表达式和函数声明是两种不同的定义方式。 5. 对象:JavaScript的对象是基于哈希表的键值对集合,可以通过字面量语法...
JavaScript的诞生源于20世纪90年代,网景公司(Netscape)为了解决网页静态性的局限,开发了Mocha,后来演变为LiveScript,最终因市场策略更名为JavaScript,以借用Java的知名度。尽管名字相似,但JavaScript与Java...