js对象继承

 一般继承是出现的问题

    function people(name,sex){
      this.name=name;
      this.sex=sex;
    }
    people.prototype.showname=function(){
      alert(this.name);
    }
    function student(name,sex,job){
      people.call(this,name,sex);
      this.job=job;
    }
    student.prototype = people.prototype;//对象赋给对象,就会出现对象的引用,如果子类原型添加一个方法,父类就会受影响
    var p1=new people(‘jack‘,32);
    var s1=new student(‘jenny‘,24,‘student‘);
    console.log(p1);
    console.log(s1);

拷贝继承

  function people(name,sex){
      this.name=name;
      this.sex=sex;
    }
    people.prototype.showname=function(){
      alert(this.name);
    }
    function student(name,sex,job){
      people.call(this,name,sex);//属性继承:调用父类的构造函数
      this.job=job;
    }

    extend(student.prototype,people.prototype);//拷贝继承,利用for in 实现方法的继承
    student.prototype.showjob=function(){
      alert();
    }
    function extend(obj1,obj2){
      for (var attr in obj2) {
        obj1[attr]=obj2[attr];
      }
    }
    var p1=new people(‘jack‘,32);
    var s1=new student(‘jenny‘,24,‘student‘);

    console.log(p1);
    console.log(s1);
时间: 2024-07-29 09:29:06

js对象继承的相关文章

JS对象继承篇

JS对象继承篇 ECMAScript只支持实现继承,而且其实现继承主要是依靠原型链来实现的 原型链 其基本思路是利用原型让一个引用类型继承另一个引用类型的属性和方法 function Person(){ this.name = "Person"; } Person.prototype.getName = function(){ return this.name; }; function SuperPerson(name,sex){ this.name = name; this.sex

JS对象继承的几种方式总结

今天学习了一下js的继承,js中的继承主要分四种,原型继承,构造函数继承,call/apply继承以及es6的extend继承.1.原型继承:原型继承主要利用js对象的prototype引用父类的构造函数来复制父类的方法. //定义一个Person类 function Person(name){ this.name=name; } //打招呼 Person.prototype.sayHello=function(){ alert("Hello,my name is "+this.nam

JS对象继承与原型链

1.以复制方式实现的继承 1.1浅拷贝 基本类型的复制 1 var parent = { 2 lanage: "chinese" 3 } 4 5 var child = { 6 name: "xxx", 7 age: 12 8 } 9 10 function extend(parent, child) { 11 var child = child || {}; 12 for (const propertype in parent) { 13 child[proper

JS中对象继承方式

JS对象继承方式 摘自<JavaScript的对象继承方式,有几种写法>,作者:peakedness 链接:https://my.oschina.net/u/3970421/blog/2872629 方式一:对象冒充 原理:构造函数使用this关键字给所有属性和方法赋值(即采用类声明的构造函数方式).因为构造函数只是一个函数,所以可使Parent构造函数称为Children的方法,然后调用它.Children会收到Parent的构造函数中定义的属性和方法. *** //父类构造函数 var P

js的继承实现方式

1. 使用call或者apply来实现js对象继承 function Animal(age){ this.age = age; this.say = function(){ console.log('age:'+this.age); }; } function Dog(age,nickname){ Animal.call(this,age); // Animal.apply(this,[age]); this.nickname = nickname; this.say = function(){

js对象的继承

<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> <script> //继承 : 子类不影响父类,子类可以继承父类的一些功能 ( 代码复用 ) //属性的继承 : 调用父类的构造函数 call //

JS 对象之继承

<!-- ————————JS对象之继承 ———————— --> //父类 function Sup(name){ this.name=name; } //父类的原型 Sup.prototype={ constructor:Sup, sayName:function(){ alert(this.name); } }; //子类构造函数 function Sub(age){ this.age=age; } //让子类的原型等于父类的实例 Sub.prototype=new Sup("

js 对象深复制,创建对象和继承

js 对象深复制,创建对象和继承.主要参考高级编程第三版,总结网上部分资料和自己的代码测试心得.每走一小步,就做一个小结. 1.对象/数组深复制 一般的=号传递的都是对象/数组的引用,如在控制台输入 var a=[1,2,3], b=a; b[0]=0; a[0] 此时显示的结果为0,也就是说a和b指向的是同一个数组,只是名字不一样罢了. 单层深复制: 1.js的slice函数: 返回一个新的数组,包含下标从 start 到 end (不包括该元素,此参数可选)的元素. 控制台输入: var a

js对象冒充实现的继承

//人类 function Person(name) { this.name = name; this.showName = function () { console.log("my name is " + name); } this.eat = function () { console.log("人是铁饭是钢..."); } } //白人 function WhitePerson(name) { this.temp = Person; this.temp(na