`
zccst
  • 浏览: 3319181 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[Object]继承(经典版)(一)对象冒充和Call

阅读更多
作者:zccst


先臆想一下这种方法
var a = function(){
	alert(1);
}
console.log(a);
a.m1 = function(){
	alert(2);
}
console.log(typeof a);
console.log(typeof a.m1);
a.m1();
//结论:给函数绑定一个属性,该属性指向另一个函数







一、对象冒充
//对象冒充,是指将父类的属性和方法一起传给子类作为特权属性和特权方法

function Person(name,age){
    this.name = name;
    this.age = age;
    this.sayHi = function(){
        alert('hi');
    }
}

Person.prototype.walk = function(){
    alert('walk.......');
}

function Student(name,age,grade){
	//是指将父类的属性和方法一起传给子类作为特权属性和特权方法。
    this.newMethod = Person;
    this.newMethod(name,age);
    delete this.newMethod;//如果不删除,newMethod还有Person的prototype方法walk
    this.grade = grade;
}

var s1 = new Student('xiaoming',10,3);
console.log(s1);//s1作为Student的对象,拥有父类和子类的属性
//Student { name="xiaoming", age=10, grade=3, sayHi=function() }

//s1.walk();//报错 s1.walk is not a function


//结论:Student类只继承了Person类的特权属性和方法,并没有继承Person类的共有属性和方法。



二、call和apply(借用构造函数)

//使用call或apply改变对象的作用域来实现继承,让父类的this等于新创建的子类的对象

function Person(name,age){
    this.name = name;
    this.age = age;
    this.sayHi = function(){
        alert('hi');
    }
}

Person.prototype.walk = function(){
    alert('walk.......');
}

function Student(name,age,grade){
	//让父类的this等于新创建的子类的对象
    Person.call(this, name, age);
    this.grade = grade;
}

var s1 = new Student('xiaoming',10,3);
console.log(s1);//s1作为Student的对象,拥有父类和子类的属性
//Student { name="xiaoming", age=10, grade=3, sayHi=function() }


//s1.walk();//s1.walk is not a function


//结论:同前面的对象冒充一样,Student类只继承了Person类的特权属性和方法,并没有继承Person类的共有属性和方法。
分享到:
评论

相关推荐

    对象 Object 转换工具

    使用此工具类,对于Object和byte[] 数组, 16进制和String之间的转换

    DOM — DOM对象继承关系1

    DOM 中的对象继承关系是指不同类型的 DOM 对象之间的继承关系,了解这些继承关系对开发者理解和使用 DOM 对象非常重要。 在 DOM 中,所有对象都继承自 EventTarget 对象,EventTarget 对象提供了事件处理的基本方法...

    Javascript类的继承,使用this.callParent调用超类方法

    当我们谈论类的继承时,我们指的是一个类(子类)可以获取另一个类(父类或超类)的属性和方法,从而实现代码复用和扩展。在本话题中,我们将深入探讨JavaScript中的类继承,并特别关注`this.callParent`这个方法,...

    qfedu面向对象继承以及Object

    qfedu面向对象继承以及Object。

    浅谈js对象的创建和对6种继承模式的理解和遐想

    2. 借用构造函数继承:也称为伪造对象或经典继承,这种模式通过在子类构造函数中调用父类构造函数来实现继承,使用apply或call方法可以给父类构造函数传递参数。它的一个缺点是无法实现父类原型属性和方法的共享。 ...

    ObjectBrowser10中文版

    **标题:“ObjectBrowser10中文版”** **描述解析:** `SI Object Browser`是一款专为Oracle应用开发和数据库管理设计的图形用户界面(GUI)工具。它集成了多种功能,方便开发者和DBA进行高效的工作。通过GUI,...

    学习javascript面向对象 javascript实现继承的方式

    继承是面向对象编程的核心概念之一,它允许我们创建一个新对象,该对象继承现有对象的属性和方法。在JavaScript中,实现继承有多种方式,每种方式都有其特点、优势和不足。本文将详细介绍六种实现JavaScript继承的...

    object c中关于继承代码示例

    object c中关于继承代码示例,代码

    JS面向对象经典案例

    在本文中,我们将介绍JavaScript面向对象编程中的经典案例,包括对象、类、继承、原型链和闭包等概念。 一、对象和类 在JavaScript中,对象是指一个实体,可以拥有自己的属性和方法。对象可以使用工厂函数或构造...

    java中Object对象String对象的解析.pdf

    在 Java 中,每个对象都继承自 Object 对象,这意味着每个对象都拥有 Object 对象的方法和属性。String 对象是 Java 中最常用的对象之一,它用于存储字符串类型的数据。 在 Java 中,Object 对象有一个非常重要的...

    js对象,五种继承 详细讲解

    - **原型式继承**:使用`Object.create()`,但不是为了继承,而是复制一个对象。 - **寄生组合式继承**:通过复制父类型的原型来改进组合继承,避免父类型引用计数增加,提高性能。 3. **JavaScript代码结构与...

    ext面向对象和继承

    在JavaScript的世界里,面向对象(Object-Oriented Programming, OOP)是一种常用的设计模式,它允许我们通过类和对象来组织代码,实现代码的复用和模块化。本篇文章将探讨EXTJS框架中的面向对象机制,特别是继承的...

    Kotlin 对象与 object 关键字

    Kotlin不仅支持面向对象编程,还支持函数式编程,而它提供的“object”关键字,是一个功能强大的语法元素,它使得开发人员可以在Kotlin中以简洁的方式实现单例模式、数据包装以及匿名内部类的功能。 首先,我们需要...

    JavaScript面向对象继承详解

    另外,`Object.create`方法可以用来创建一个新对象,其`__proto__`指向指定的对象,是实现继承的一种便捷方式。`Object.setPrototypeOf`则用于设置一个对象的原型。 总的来说,JavaScript的面向对象继承机制灵活而...

    面向对象软件构造(Object-Oriented Software Construction)(已补上33章)

    《面向对象软件构造》是Peter Coad和Edward Yourdon合著的一本经典著作,它深入探讨了面向对象(Object-Oriented,简称OO)软件开发的方法和技术。这本书在IT行业中具有很高的声誉,对于理解面向对象编程思想和实践...

    Object_C.rar_ 嵌入式系统_C语言面向对象_object_c_嵌入式 面向对象_面向对象编程

    面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将程序设计中的实体(如数据和操作)封装在一起,形成对象,并通过消息传递的方式进行交互。在传统C语言的基础上引入面向对象的概念,可以...

    inside.the.c++.object.model.pdf_inside_C++_

    《Inside the C++ Object Model》是一本由Stanley Lippman编著的深入解析C++对象模型的专业书籍。这本书详细探讨了C++编程语言在内存、类型系统、对象表示、继承、虚函数、模板等核心概念下的底层实现原理。通过阅读...

    xml和JAVA对象转换 simple-xml2object

    simple-xml2object是一个简单实用的xml和JAVA对象转换的类库,jar包很小,而且不需要任何依赖包。 下载后,压缩包包含一个jar包,导入即可。包含一个测试类,有详细的注释展示用法。还包含一个中文文档。

    由JavaScript中call()方法引发的对面向对象继承机制call的思考

    在面向对象编程中,继承是核心概念之一,它允许一个类(子类)继承另一个类(父类)的属性和方法。JavaScript作为一种多范式的编程语言,虽然传统上不采用类和继承的概念,但是通过原型链和特定的方法,如call(),...

    《深度探索C++对象模型》(Stanley B·Lippman[美] 著,侯捷 译)

    6.1 对象的构造和解构(Object Construction and Destruction) 全局对象(Global Objects) 局部静态对象(Local Static Objects) 对象数组(Array of Objects) Default Constructors和数组 6.2 new和delete...

Global site tag (gtag.js) - Google Analytics