数码资讯
javascript代码重用模式详细解决方案
代码重用及其原则 代码重用,顾名思义,就是重用一个部分,甚至是编写一个新程序所需的所有代码: 使用对象组合而不是类继承 在js中,由于没有类的概念,实例的概念没有多大意义。js中的对象是简单的键值对,可以动态地创建和修改。 但在js中,我们可以使用构造函数和new操作符实例化一个对象,它与其他使用类
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
代码重用及其原则
代码重用,顾名思义,就是重用一个部分,甚至是编写一个新程序所需的所有代码:
使用对象组合而不是类继承
在js中,由于没有类的概念,实例的概念没有多大意义。js中的对象是简单的键值对,可以动态地创建和修改。
但在js中,我们可以使用构造函数和new操作符实例化一个对象,它与其他使用类的编程语言语法相似。
例如:
无功trigkit4 =新的人();
js在调用构造函数时似乎是一个类,但实际上它是一个函数。给出了基于类的一些假设和继承模型。我们可以称之为类继承模式。
传统的继承模式是对类关键字的需求。我们假设上面的类继承模式是一种现代继承模式。这是一种不需要按类的方式来考虑的模式。
类的继承模型
看一下以下两个构造函数:父()和子()。
函数父(名称){
this.name = name'allen| |;
}
parent.prototype.say =函数(){
返回this.name;
}
函数子(名称){ }
由父构造函数创建的对象,并将对象分配给子原型以实现继承。
函数继承(c,p){
c.prototype =新(P); / /原型属性应该指向一个对象,而不是功能
}
函数调用语句继承
继承(子、父);
当一个新的子()语句用于创建一个对象时,它通过原型从父()实例获得它的函数,例如:
新孩子();
Kid.say();
/艾伦
原型链
讨论了类继承模式下原型链的工作原理。我们把对象在内存块,其中包含的数据和参考其他块。使用新的当(母)语句来创建一个对象,它将创造留下一块,块保存名字的属性,如果你想去(说)的方法,我们可以点构造器(母)的原型(原型)的隐式属性链连接到__proto__,您可以访问正确的块parent.prototype。
那么当使用var子=新子()创建一个新对象时会发生什么呢如下:
使用新创建的对象(孩子)的声明几乎是空荡荡的隐式链接__proto__。在这种情况下,使用新创建的对象的父__proto__点()在继承声明()函数
kid.say执行()时,由于该块对象的左下角,不说()方法,所以他将通过原型链查询中的块对象,然而,该块对象中没有说()方法,所以他跟着原型链查询右侧的对象块和对象是说()方法。到处是它吗
在这里表演并没有结束,在说()在this.name参考方法,这一点在这里创造的对象的构造函数,它指向新的(孩子)这一块,但是,新的(孩子),没有名字的属性,因此,将查询中间块,中间一块是name属性,到目前为止,原型链查询完成。
要更详细的讨论,请看我的文章:Javascript学习笔记(五)原型和原型链细节
共享原型
这种模式的规则是可重用的构件应转移而不是被放置在这个原型。因此,在继承的目的,任何值得继承应在原型实现的。所以,你可以设置一个对象为孩子的父对象相同的原型,在下面的示例所示:
函数继承(c,p){
c.prototype = p.prototype;
}
子对象和父对象共享相同的原型,并且可以平等地访问说()方法。但是,子对象不继承name属性。
原型继承
原型继承是一种现代的非类继承模型:
要继承的对象
var父= {
名称: /不能有分号。
};
新对象
var子对象(父类);
警报(子名称);杰克
在原型模式中,您不需要使用对象文字来创建父对象。下面的代码显示构造函数可以用来创建父对象,这样它的属性和构造函数的原型的属性将继承。
父/ /构造函数
功能人(){
this.name =trigkit4 ;
}
将属性添加到原型中
person.prototype.getname =函数(){
返回this.name;
};
创建一个新的类对象
var obj =新的人();
继承
VaR的孩子=对象(obj);
警报(kid.getname()); / / trigkit4
在这种模式下,您可以选择只继承现有构造函数的原型对象。对象继承于对象,而不管父对象是如何创建的,如下所示:
父/ /构造函数
功能人(){
this.name =trigkit4 ;
}
将属性添加到原型中
person.prototype.getname =函数(){
返回this.name;
};
创建一个新的类对象
var obj =新的人();
继承
var =对象(人,原型);
console.log(typeof的孩子。getName); / /功能,因为它是在原型
console.log(typeof的孩子的名字); / /定义,因为只有原型继承
代码重用,顾名思义,就是重用一个部分,甚至是编写一个新程序所需的所有代码:
使用对象组合而不是类继承
在js中,由于没有类的概念,实例的概念没有多大意义。js中的对象是简单的键值对,可以动态地创建和修改。
但在js中,我们可以使用构造函数和new操作符实例化一个对象,它与其他使用类的编程语言语法相似。
例如:
无功trigkit4 =新的人();
js在调用构造函数时似乎是一个类,但实际上它是一个函数。给出了基于类的一些假设和继承模型。我们可以称之为类继承模式。
传统的继承模式是对类关键字的需求。我们假设上面的类继承模式是一种现代继承模式。这是一种不需要按类的方式来考虑的模式。
类的继承模型
看一下以下两个构造函数:父()和子()。
函数父(名称){
this.name = name'allen| |;
}
parent.prototype.say =函数(){
返回this.name;
}
函数子(名称){ }
由父构造函数创建的对象,并将对象分配给子原型以实现继承。
函数继承(c,p){
c.prototype =新(P); / /原型属性应该指向一个对象,而不是功能
}
函数调用语句继承
继承(子、父);
当一个新的子()语句用于创建一个对象时,它通过原型从父()实例获得它的函数,例如:
新孩子();
Kid.say();
/艾伦
原型链
讨论了类继承模式下原型链的工作原理。我们把对象在内存块,其中包含的数据和参考其他块。使用新的当(母)语句来创建一个对象,它将创造留下一块,块保存名字的属性,如果你想去(说)的方法,我们可以点构造器(母)的原型(原型)的隐式属性链连接到__proto__,您可以访问正确的块parent.prototype。
那么当使用var子=新子()创建一个新对象时会发生什么呢如下:
使用新创建的对象(孩子)的声明几乎是空荡荡的隐式链接__proto__。在这种情况下,使用新创建的对象的父__proto__点()在继承声明()函数
kid.say执行()时,由于该块对象的左下角,不说()方法,所以他将通过原型链查询中的块对象,然而,该块对象中没有说()方法,所以他跟着原型链查询右侧的对象块和对象是说()方法。到处是它吗
在这里表演并没有结束,在说()在this.name参考方法,这一点在这里创造的对象的构造函数,它指向新的(孩子)这一块,但是,新的(孩子),没有名字的属性,因此,将查询中间块,中间一块是name属性,到目前为止,原型链查询完成。
要更详细的讨论,请看我的文章:Javascript学习笔记(五)原型和原型链细节
共享原型
这种模式的规则是可重用的构件应转移而不是被放置在这个原型。因此,在继承的目的,任何值得继承应在原型实现的。所以,你可以设置一个对象为孩子的父对象相同的原型,在下面的示例所示:
函数继承(c,p){
c.prototype = p.prototype;
}
子对象和父对象共享相同的原型,并且可以平等地访问说()方法。但是,子对象不继承name属性。
原型继承
原型继承是一种现代的非类继承模型:
要继承的对象
var父= {
名称: /不能有分号。
};
新对象
var子对象(父类);
警报(子名称);杰克
在原型模式中,您不需要使用对象文字来创建父对象。下面的代码显示构造函数可以用来创建父对象,这样它的属性和构造函数的原型的属性将继承。
父/ /构造函数
功能人(){
this.name =trigkit4 ;
}
将属性添加到原型中
person.prototype.getname =函数(){
返回this.name;
};
创建一个新的类对象
var obj =新的人();
继承
VaR的孩子=对象(obj);
警报(kid.getname()); / / trigkit4
在这种模式下,您可以选择只继承现有构造函数的原型对象。对象继承于对象,而不管父对象是如何创建的,如下所示:
父/ /构造函数
功能人(){
this.name =trigkit4 ;
}
将属性添加到原型中
person.prototype.getname =函数(){
返回this.name;
};
创建一个新的类对象
var obj =新的人();
继承
var =对象(人,原型);
console.log(typeof的孩子。getName); / /功能,因为它是在原型
console.log(typeof的孩子的名字); / /定义,因为只有原型继承
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。