JS中实现继承的3种方法

本文章观点取自<JS语言精粹>。

JS不是一门给予类的语言, 所以不能直接提供继承。但是JS还是可以实现继承的。下面介绍三种实现继承的方式:

一. 伪类

顾名思义, 伪类和其他强类型语言中类的概念类似, 他通过new 关键字调用构造函数,但是这种方法无法构造的类没有私有环境, 属性公开, 不能访问父类方法, 带来了语言的使用风险, 所以这种方式尽量不用。

二. 原型继承

//基类

var  testClass = {
           name:"testClass",
           getName: function()
         {
              return this.name;
        }

};

create=function (o){
                  var F = function(){};
                  F.prototype = o;
                  return new F();

}
//创建子类

var childClass = create(testClass);

// 扩展子类方法
    childClass.saying = "hello"

console.log(childClass.getName()); //testclass
  console.log(childClass.name);//testclass
  console.log(childClass.saying);//hello

childClass.getName = function(){ return "childClass"};
  console.log(childClass.getName());  //childClass

总结: 基于原型的继承能够很好的继承父类的属性, 同时,在更新属性时,不会对父类更改,并且易于实现, 但是缺点是没有私有变量

三 . 函数化

这种方法可以提供私有变量.

var parentClass = function()

{

var that ={}

var name = "parentClass";  // 父类的私有变量 只有getName 可以调用

that.getName = function(){return name}\

return that;

}

var childClass = funcrtion()

{

var  childname = "chilaClass";// 子类私有变量

var that = parentClass();// 继承父类

that.say = "hello";//对父类进行方法的拓展

return that;

}

var child= childClass();

console.log(child.say);//hello

console.log(child.getName());//parentclass

以上

时间: 2024-08-10 10:18:10

JS中实现继承的3种方法的相关文章

js中数组去重的几种方法

js中数组去重的几种方法         1.遍历数组,一一比较,比较到相同的就删除后面的                 function unique(arr){                         for(var i=0;i<arr.length;i++){                                 for(var j=i+1;j<arr.length;j++){                                         if(ar

判断js中的数据类型的几种方法

判断js中的数据类型有一下几种方法:typeof.instanceof. constructor. prototype. $.type()/jquery.type(),接下来主要比较一下这几种方法的异同. 先举几个例子: 1 var a = "iamstring."; 2 var b = 222; 3 var c= [1,2,3]; 4 var d = new Date(); 5 var e = function(){alert(111);}; 6 var f = function()

转:判断js中的数据类型的几种方法

判断js中的数据类型有一下几种方法:typeof.instanceof. constructor. prototype. $.type()/jquery.type(),接下来主要比较一下这几种方法的异同. 先举几个例子: var a = "iamstring."; var b = 222; var c= [1,2,3]; var d = new Date(); var e = function(){alert(111);}; var f = function(){this.name=&

JS 中检测数组的四种方法

今天和大家分享一下 JS 中检测是不是数组的四种方法,虽然篇幅不长,不过方法应该算是比较全面了. 1. instanceof 方法 instanceof 用于检测一个对象是不是某个类的实例,数组也是一种对象所以也可以利用 instaceof 来进行判断. let arr = [1, 2, 3]; console.log(arr.instanceof(Array)); // true 这种方法在只有一个全局作用域的环境下是可以的,但是如果一个网页中包含多个框架,那么就会存在不同的全局环境,不同的环

js中控制流管理的三种方法

引自http://es6.ruanyifeng.com/#docs/generator#yield--表达式 1.常用的回调方法 step1(function (value1) { step2(value1, function(value2) { step3(value2, function(value3) { step4(value3, function(value4) { // Do something with value4 }); }); }); }); 2.ES6中的Promise P

JS中申明数组的三种方法

JS中的数组对象可以存放的元素非常丰富,包括number.String等基本的数据类型以及object对象还有数组类型,他们都可以构成数组元素的一部分. 方法1: var a = new array(); a[0] = "1";//String类型 a[1] = 2;//number类型 a[2] = { x:1, y:3};//object对象作为数组的元素 //方法2: var  a  =  new array("1" , 2 , {x:1,y:3} ); //

【微信小程序】在js中导入第三方js或自己写的js,使用外部js中的function的两种方法 import和require的区别使用方法

如下 定义了一个外部js文件,其中有一个function import lunaCommon from '../lunaCommon.js'; var ctx = wx.getStorageSync("ctx"); var filter = "/ms-code"; var apis = { //根据sc获取发货单 "findDispatchBill": function (data, success) { var url = ctx + filt

JS中字符串倒序的两种方法

var reverse = function( str ){ var stack = [];//生成一个栈 for(var len = str.length,i=len;i>=0;i-- ){ stack.push(str[i]); } return join(''); }; reverse('hey there'); ## 另一种更为简便的方法 var reverse = function( str ){ return str.split('').reverse().join(''); };

JS中获取元素的第二种方法

1.静态方法 var oUl = document.getElementById(''); 2.动态方法 document.getElementsByTagName(''); 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 5 <title>无标