作者:密斯特_张_ | 来源:互联网 | 2023-10-10 13:28
如何在Javascript中定义继承?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
Javascript的特点
1.Javascript主要用来向HTML页面添加交互行为。
2.Javascript可以直接嵌入到HTML页面,但写成单独的js文件有利于结构和行为的分离。
3.Javascript具有跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行。
基类定义如下:
// base class
function Animal(t)
{
if(typeof t==='string')
this.type=t;
else
{
if(t)
this.type=t.toString();
else
this.type='Animal'
}
this.speak=function(str)
{
if(str)
console.log(this.type+' said '+str);
else
throw "please specify what you want to say!";
}
}
1. 原型继承 (Javascript 类库本身基于原型继承)
String, Number , Boolean 这三大原始类型 我们可以很直接的通过prototype 检查到他们继承自Object.
Date, RegExp ,Array 这三应该是间接继承了Object, 他们的prototype属性很特殊 :
Date.prototype =Invalid Date
RegExp.prototype=/(?:)/
Array.prototype=[]
原型继承代码如下: (可以看到Mokey 原型链上的Animal和Object)
// Monkey : Animal
function Monkey(name,age)
{
this.name=name;
this.age=age;
}
Monkey.prototype=new Animal('Monkey');
// Example 01
var m=new Monkey('codeMonkey',10);
/*
Monkey:
age: 10
name: "codeMonkey"
__proto__: Animal
speak: function (str)
type: "Monkey"
__proto__: Animal
constructor: function Animal(t)
__proto__: Object
*/
console.log(m.type); // Monkey
console.log(m.name); // codeMonkey
console.log(m.age); // 10
m.speak('hello world') // Monkey said hello world
2. 调用父类构造函数 ( 通过传递子类的this指针 , 将原本是父类的公开成员直接添加到了子类中,从子类原型链中无法看出继承关系)
// Human:Animal
function Human(id,name)
{
// call base class's constuctor function
Animal.call(this,'Human');
this.id=id;
this.name=name;
}
var h=new Human(1,'leon');
/*
id: 1
name: "leon"
speak: function (str)
type: "Human"
__proto__: Human
constructor: function Human(id,name)
__proto__: Object
*/
h.speak('hello world'); // Human said hello world
console.log(h.type); // Human
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程笔记行业资讯频道,感谢您对编程笔记的支持。