js "类"概念的简单认识
来源:互联网 发布:excel数据下拉列表 编辑:程序博客网 时间:2024/04/29 17:18
在js中,类的实现是基于其原型继承机制的。如果2个实例都从同一个原型对象上继承了属性,我们说它们是同一个类的实例。
因此,原型对象是类的核心。
通常,类的实例还需要进一步初始化,通常是通过定义一个函数来创建并初始化这个新对象。
<script type="text/javascript">
//实现一个能表示值的范围的类
//这个工厂方法返回一个新的"范围对象"
function range(from,to){
//使用inherit()函数来创建对象,这个对象继承自在下面定义的原型对象
//原型对象作为函数的一个属性存储,并定义所有"范围对象"所共享的方法
var r = inherit(range.methods);
//存储新的"范围对象"的起始位置和结束位置(状态)
//这2个属性是不可继承的,每个对象都拥有唯一的属性
r.from = from;
r.to = to;
//返回这个新创建的对象
return r;
}
//原型对象定义方法,这些方法为每个范围对象所继承
range.methods = {
//如果x在范围内,则返回true,否则返回false
//这个方法可以比较数字范围,也可以比较字符串和日期范围
includes:function(x){
return this.from<=x && x<=this.to;
},
//对于范围内的每个整数都调用一次f
//这个方法只可用做数字范围
foreach:function(f){
for(var x=Math.ceil(this.from); x<=this.to; x++){
f(x);
};
},
//返回表示这个范围的字符串
toString:function(){
return "("+this.from+"..."+this.to+")";
}
};
//这里是使用"范围对象"的一些例子
var r = range(1,3); //创建一个范围对象
r.includes(2); //true:2在这个范围内
r.foreach(console.log); // 输出 1 2 3
console.log(r); //输出 (1...3)
</script>
【类和构造函数】
调用构造函数的一种重要特征是,构造函数的prototype属性被用作新对象的原型。这意味着通过同一个构造函数创建的所有对象都继承自一个相同的对象,因此它们都是同一个类的成员。
原型对象是类的唯一标识:当且仅当2个对象继承自同一个原型对象时,它们才是属于同一个类的实例。
js中基于原型的继承机制是动态的:对象从其原型继承属性,如果创建对象之后原型的属性发生改变,也会影响到继承这个原型的所有实例对象。这意味着我们可以通过给原型对象添加新方法来扩充js类。
因此,原型对象是类的核心。
通常,类的实例还需要进一步初始化,通常是通过定义一个函数来创建并初始化这个新对象。
<script type="text/javascript">
//实现一个能表示值的范围的类
//这个工厂方法返回一个新的"范围对象"
function range(from,to){
//使用inherit()函数来创建对象,这个对象继承自在下面定义的原型对象
//原型对象作为函数的一个属性存储,并定义所有"范围对象"所共享的方法
var r = inherit(range.methods);
//存储新的"范围对象"的起始位置和结束位置(状态)
//这2个属性是不可继承的,每个对象都拥有唯一的属性
r.from = from;
r.to = to;
//返回这个新创建的对象
return r;
}
//原型对象定义方法,这些方法为每个范围对象所继承
range.methods = {
//如果x在范围内,则返回true,否则返回false
//这个方法可以比较数字范围,也可以比较字符串和日期范围
includes:function(x){
return this.from<=x && x<=this.to;
},
//对于范围内的每个整数都调用一次f
//这个方法只可用做数字范围
foreach:function(f){
for(var x=Math.ceil(this.from); x<=this.to; x++){
f(x);
};
},
//返回表示这个范围的字符串
toString:function(){
return "("+this.from+"..."+this.to+")";
}
};
//这里是使用"范围对象"的一些例子
var r = range(1,3); //创建一个范围对象
r.includes(2); //true:2在这个范围内
r.foreach(console.log); // 输出 1 2 3
console.log(r); //输出 (1...3)
</script>
【类和构造函数】
调用构造函数的一种重要特征是,构造函数的prototype属性被用作新对象的原型。这意味着通过同一个构造函数创建的所有对象都继承自一个相同的对象,因此它们都是同一个类的成员。
原型对象是类的唯一标识:当且仅当2个对象继承自同一个原型对象时,它们才是属于同一个类的实例。
js中基于原型的继承机制是动态的:对象从其原型继承属性,如果创建对象之后原型的属性发生改变,也会影响到继承这个原型的所有实例对象。这意味着我们可以通过给原型对象添加新方法来扩充js类。
0 0
- js "类"概念的简单认识
- js函数中 "闭包"概念的简单认识
- 简单认识正则表达式的概念
- 分布式和集群概念的简单的认识
- AbstractAction类的简单认识
- js的Image对象属性的简单认识
- js状态模式简单认识
- 初学java--面向对象的概念和类的认识
- js的认识
- 对于类和对象的简单认识
- OpenSocial 的简单认识
- ERRORLEVEL 的简单认识
- NSRunloop的简单认识
- 循环的简单认识
- AOP的简单认识
- NSRunloop的简单认识
- Fastjson的简单认识
- NSRunloop的简单认识
- java pdf写入中文时不显示,如何解决。
- 横屏监听
- Oracle中常见的33个等待事件小结
- git操作
- JavaEE体系学习路径(尚硅谷版)
- js "类"概念的简单认识
- android BaseColumns的用处
- Mina源码阅读笔记(七)—Mina的拦截器FilterChain
- iOS键盘操作
- Android string.xml 显示特殊符号
- 【thinkphp3.x】thinkphp3.x中给控制器中的操作方法指定后缀
- 求字符串中最长无重复字符的子串
- 黑马程序员——C基础之推箱子游戏
- 如何获取媒体库中所有音频文件信息,并在文件增删后及时更新媒体库