在JavaScript实例对象中改写原型方法详情

目录

JavaScript中,我们通常可以像下面的代码这样来简单地定义一个类:

var sample = function() {
    // constructor code here
}

sample.prototype.func1 = function() {
    // func1 code here
}

sample.prototype.func2 = function() {
    // func2 code here
}

/* more sample prototype functions here... */

然后使用下面的代码来实例化,并访问其中的原型方法:

var sampleInstance = new sample();
sampleInstance.func1();
sampleInstance.func2();
// call more sample object prototype functions

但是如果我们想改写其中一个原型方法,并且不破坏原有的sample对象,如何来实现呢?一个最简单的方法就是再构建一个类,使其继承sample,然后在继承类的原型方法中改写基类的方法,就像下面这样:

var subSample = function() {
    // constructor code here
}

// inherit from sample
subSample.prototype = new sample();
subSample.prototype.fun1 = function() {
    // overwrite the sample's func1
}

但是如果没有构建继承类,而想改写原型方法,可以直接使用下面的代码:

var sampleInstance = new sample();
sampleInstance.func1 = function() {
    sample.prototype.fun1.call(this); // call sample's func1
    // sampleInstance.func1 code here
}

我们重新定义了sample的实例对象的func1方法,并在其中访问了其原型方法func1,然后又在其中添加了一些额外代码。通过这样的方法,我们对sample的原型方法进行了扩展,并且没有创建派生类,而且也没有破坏sample的原型方法。

到此这篇关于在JavaScript实例对象中改写原型方法详情的文章就介绍到这了,更多相关在JavaScript实例对象中改写原型方法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 带你彻底理解JavaScript中的原型对象

    一.什么是原型 原型是Javascript中的继承的基础,JavaScript的继承就是基于原型的继承. 1.1 函数的原型对象 ​ 在JavaScript中,我们创建一个函数A(就是声明一个函数), 那么浏览器就会在内存中创建一个对象B,而且每个函数都默认会有一个属性 prototype 指向了这个对象( 即:prototype的属性的值是这个对象 ).这个对象B就是函数A的原型对象,简称函数的原型.这个原型对象B 默认会有一个属性 constructor 指向了这个函数A ( 意思就是说:c

  • js使用原型对象(prototype)需要注意的地方

    我们先来一个简单的构造函数+原型对象的小程序 function CreateObj( uName, uAge ) { this.userName = uName; this.userAge = uAge; } CreateObj.prototype.showUserName = function () { return this.userName; } CreateObj.prototype.showUserAge = function () { return this.userAge; } 这

  • 全面解析js中的原型,原型对象,原型链

    理解原型 我们创建的每一个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法.看如下例子: function Person(){ } Person.prototype.name = 'ccc' Person.prototype.age = 18 Person.prototype.sayName = function (){ console.log(this.name); } var person1 = ne

  • JavaScript为内置对象添加原型方法实现

    对象调用方法的顺序: 实例中的方法如果没有,去创建该实例对象的构造函数的原型对象中找 我们能为系统的对象的原型中添加方法,其实也就是相当于在改变源码 添加字符串倒序输出字符串的方法 我希望字符串中有一个倒序字符串的方法 String.prototype.myReverse=function () { for(var i=this.length-1;i>=0;i--){ console.log(this[i]); } }; var str="abcdefg"; str.myReve

  • 在JavaScript实例对象中改写原型方法详情

    目录 在JavaScript中,我们通常可以像下面的代码这样来简单地定义一个类: var sample = function() { // constructor code here } sample.prototype.func1 = function() { // func1 code here } sample.prototype.func2 = function() { // func2 code here } /* more sample prototype functions her

  • 如何直接访问php实例对象中的private属性详解

    前言 本文主要介绍了关于如何直接访问php实例对象中private属性的相关内容,在介绍关键部分之前,我们先回顾一下php面向对象的访问控制. 对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的.被定义为公有的类成员可以在任何地方被访问.被定义为受保护的类成员则可以被其自身以及其子类和父类访问.被定义为私有的类成员则只能被其定义所在的类访问. 类属性必须定义为公有,受保护,私有之一.如果用 var 定义,则被视为公

  • javascript操作ul中li的方法

    本文实例讲述了javascript操作ul中li的方法.分享给大家供大家参考.具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> &l

  • JavaScript实现Java中StringBuffer的方法

    本文实例讲述了JavaScript实现Java中StringBuffer的方法.分享给大家供大家参考.具体如下: Javascript StringBuffer类的实现是通过prototype构造一个StringBuffer类,代码如下: function StringBuffer() { this.__strings__ = new Array(); } StringBuffer.prototype.append = function(str) { this.__strings__.push(

  • JavaScript Math对象和调试程序的方法分析

    本文实例讲述了JavaScript Math对象和调试程序的方法.分享给大家供大家参考,具体如下: Math对象 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>math对象</title> <script type="text/javascript"> var iPi=M

  • JavaScript 判断对象中是否有某属性的常用方法

    判断对象中是否有某属性的常见方式总结,不同的场景要使用不同的方式. 一.点( . )或者方括号( [ ] ) 通过点或者方括号可以获取对象的属性值,如果对象上不存在该属性,则会返回undefined.当然,这里的"不存在"指的是对象自身和原型链上都不存在,如果原型链有该属性,则会返回原型链上的属性值. // 创建对象 let test = {name : 'lei'} // 获取对象的自身的属性 test.name //"lei" test["name&q

  • JavaScript操作 url 中 search 部分方法函数

    前言 首先,我们需要知道什么是 search , search 是 window.location 的一个属性.举个例子: 首先,我们这里有一个 url,是 http://www.a.com/list/2.html?page=2&color=4&size=3#pic. 我们访问访问这个地址,打开控制台,输入window.location,会得到如下图的结果 如上,我们要操作的就是上图中方框框出来的这个部分. 为什么要操作这个? 例如,我在第二页,需要跳转到第三页,就需要把上面的 page=

  • javascript检测对象中是否存在某个属性判断方法小结

    检测对象中属性的存在与否可以通过几种方法来判断. 1.使用in关键字该方法可以判断对象的自有属性和继承来的属性是否存在. 复制代码 代码如下: var o={x:1}; "x" in o; //true,自有属性存在 "y" in o; //false "toString" in o; //true,是一个继承属性 2.使用对象的hasOwnProperty()方法 该方法只能判断自有属性是否存在,对于继承属性会返回false. 复制代码 代码如

  • JavaScript 复制对象与Object.assign方法无法实现深复制

    在JavaScript这门语言中,数据类型分为两大类:基本数据类型和复杂数据类型.基本数据类型包括Number.Boolean.String.Null.String.Symbol(ES6 新增),而复杂数据类型包括Object,而所有其他引用类型(Array.Date.RegExp.Function.基本包装类型(Boolean.String.Number).Math等)都是Object类型的实例对象,因此都可以继承Object原型对象的一些属性和方法. 而对于基本数据类型来说,复制一个变量值,

  • javaScript遍历对象和数组的方法总结

    在日常工作过程中,我们对于javaScript遍历对象.数组的操作是十分的频繁的,今天抽空把经常用到的方法小结一下,方便今后参考使用! javaScript遍历对象总结 1.使用Object.keys()遍历 返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性). var obj = {'0':'a','1':'b','2':'c'}; Object.keys(obj).forEach(function(key){ console.log(key,obj[key]);

随机推荐