美文网首页
JS继承问题

JS继承问题

作者: 雅玲哑铃 | 来源:发表于2017-12-21 20:38 被阅读12次

JS作为面向对象的弱类型语言,继承也是其非常强大的特性之一,那么,我们该如何在JS中实现继承呢?

一、公有私有属性

//定义一个类
function Person(name){
    var name  = name;      //private 私有属性
    this.height = "180cm";   //public 公有属性
}

首先,在这个类里面,我们设置了两种属性,公有属性才能在外部访问,私有属性访问不到,我们可以来测试一下,实例化一个对象:

var newPerson = new Person("张三");
console.log(newPerson.name,newPerson.height);      //undefined  "180cm"

这里我们打印不到newPerson.name,是因为var定义的name是类的私有变量,通过对象名.属性的方式不能被访问,私有属性只能在内部使用,而通过this.height是定义公有属性,可以在外部通过对象.属性名来访问;
  那么要怎样来访问私有属性和设置私有属性呢?

function Person(name){
    var name  = name;      //private 私有属性
    this.height = "180cm";   //public 公有属性
    //通过公有方法访问私有属性
    this.get = function(){
        return name;
    }
    //设置私有属性
    this.set = function(newName){
        name = newName;  
    }
}

这里我们可以设置公有的方法,将私有属性当做返回值,再在外部调用公有方法获得私有属性,设置私有属性也是这个道理,通过外部调用公有方法,在公有方法中设置私有属性,这样就能在外部设置私有属性了。

//外部我们这样调用公有方法
console.log(newPerson.get());  //通过公有方法获得私有属性name
newPerson.set("李四");   //通过公有方法设置私有属性name
new

二、继承问题

说道继承,父类和子类都是必不可少的

//定义一个父类
function Dad(height){
    this.name = "张三";
    this.age = "50";
    this.height = height;
    this.money = "$1000000";
    this.hobby = function(){
      console.log("喜欢高尔夫");
    }
}
//定义一个子类
function Son(height){
    //通过调用父类构造方法继承属性
    Dad.call(this,height);
    //Dad.apply(this,[height]);
    //Dad.bind(this)(height);
    this.action = function(){
        console.log("喜欢玩");
    }
}
//实例化对象
var newSon = new Son("180cm");
console.log(newSon.height);
newSon.hobby();
newSon.action();

打印结果是如下,证明是可以在子类构造方法中调用父类构造方法来继承父类属性的


打印结果.png

相关文章

  • JS继承问题

    JS作为面向对象的弱类型语言,继承也是其非常强大的特性之一,那么,我们该如何在JS中实现继承呢? 一、公有私有属性...

  • javaScript中继承的几种形式

    js中继承是一个相对复杂的问题,这里我自己做了一些总结,便于日后复习。 什么是继承? js中的继承可以从对象的角度...

  • Js的继承

    js的继承 @(js)[继承, js, 前端] 组合继承是原性链继承和构造函数继承的合体,它汲取了二者各自的有点,...

  • js中的继承问题

    学过java或者c#之类语言的同学,应该会对js的继承感到很困惑--不要问我怎么知道的,js的继承主要是基于原型(...

  • JS继承的相关问题

    构造函数、原型对象和实例之间的关系? 每个构造函数都有一个 prototype 属性指向原型对象,原型对象中有一个...

  • js中的类和constructor

    问题 一直搞不清constructor和super是干什么用的。 前提 了解js的继承 原型继承 原型继承是通过利...

  • JS继承

    JS中的继承 许多OO语言都支持两种继承方式:接口继承和实现继承; 因为JS中没有类和接口的概念 , 所以JS不支...

  • #js继承

    js继承的概念 js里常用的如下两种继承方式: 原型链继承(对象间的继承)类式继承(构造函数间的继承) 类式继承是...

  • js继承遇到的小问题

    这两天在看js继承方面,它不像OC那种传统的类继承。js继承方式还是挺多的。比如:原型继承、原型冒充、复制继承 原...

  • JS中继承的实现

    JS中继承的实现 #prototype (js原型(prototype)实现继承) 全局的Function对象没有...

网友评论

      本文标题:JS继承问题

      本文链接:https://www.haomeiwen.com/subject/uqqzwxtx.html