Javascript学习笔记(二)Javascript核心之类,构造函数和原型
来源:互联网 发布:linux操作系统那个好用 编辑:程序博客网 时间:2024/05/16 14:53
javascript并不支持真实的类(像JAVA,C#,C++),但是它可以通过构造函数和属性定义伪类.
构造函数:通过构造函数来定义一个对象类,使用它的参数来初始化this关键字所引用的对象的属性.构造函数只是初始化了特定的对象,但并不返回这个对象.通过new 调用构造函数.
原型对象和继承:Javascript对象继承原型对象的所有属性.一个对象的原型是由创建并初始化该对象的构造函数定义的.Javascript中的所有属性都有prototype属性,它引用了一个对象.看下面的例子.
//构造函数初始化不同实例的属性
function Rectangle(w, h) {
this.width = w;
this.height = h;
}
Rectangle.prototype.area = function( ) { return this.width * this.height; }//原始对象保存方法并共享实例的其他属性
注意,继承是在查询一个属性值时自动发生的.每个类都有一个原型对象,这个原型对象都具有一套属性.他们可以通过for/in被列举出来并且可以用in操作符来测试.但是只能用object.hasOwnProperty()方法来区分,如:
var r = new Rectangle(2, 3);
r.hasOwnProperty("width"); // true: width 是r的一个直接属性
r.hasOwnProperty("area"); // false: area是r的一个继承属性
"area" in r; //true: "area"是r的一个属性
读写继承属性:属性的继承只发生在读属性值时,而在写属性值时不会发生.下面通过一个例子说明:
不仅是用户自定义类有原型对象,内置类如String和Date也有原型对象,并且可以赋值给他们.如:
String.prototype.endsWith = function(c) {
return (c == this.charAt(this.length-1))
}//如果最后一个字符是"c"将返回true
var message = "hello world";
message.endsWith('h') // Returns false
message.endsWith('d') // Returns true
Javascript中的模拟类:默认情况下,任何对象属性都是实例属性,为了真实地模拟面向对象的程序设计语言,我们说Javascript中的实例属性是那些在对象中用构造函数创建的或初始化地属性.实例方法和实例属性非常相似,只不过它是方法而不是数值.实例方法是由特定对象或实例调用的.在Javascript中必须用this特别指明属性.
类属性:在Javascript中,Number.MAX_VALUE就是类属性的一个例子,因为属性MAX_VALUE就是通过类Number来存取的.由于每个类属性只有一个副本,所以本质上说来属性是全局变量.
类方法:一个与类关联在一起的方法,而不是和类的实例关联在一起的方法.要调用类方法,必须使用类本身,而不能使用该类的特定实例.如Date.parse()就是一个类方法.
通用对象方法:toString(),valueOf(),compareTo()
超类和子类:Object是所有内部类的超类,本章中使用的类都是Object的直接子类.
无继承扩展:
- Javascript学习笔记(二)Javascript核心之类,构造函数和原型
- Javascript学习笔记(二)Javascript核心之类,构造函数和原型
- javascript 学习笔记3-构造函数、类和原型
- JavaScript原型和闭包之---构造函数(二)
- Javascript学习笔记(二)Javascript核心之函数
- 【学习笔记】JavaScript中,构造函数、原型对象和实例的关系
- JavaScript学习-组合使用构造函数和原型模式
- Javascript学习笔记(二)Javascript核心之对象和数组
- javascript 类 构造函数和原型
- Javascript的类,构造函数和原型
- javascript的构造函数和原型
- javascript的原型和构造函数
- JavaScript中的构造函数和原型对象
- javaScript构造函数和原型对象
- javascript 学习笔记二【原型链模式】
- JavaScript学习笔记(二十四) 模块创建构造函数
- Javascript构造函数、原型、对象
- javascript--面向对象(二)构造函数式的缺点和原型prototype
- 利用 .net framework 命令行工具
- [原创]完美的透明窗体!
- BDS2006的自动完成函数提示说明
- [原创]发现IIS5出现乱码的一个问题。
- 惠普将收购企业软件提供商Exstream
- Javascript学习笔记(二)Javascript核心之类,构造函数和原型
- VS.NET 2005中实用的默认键
- SOA概览
- AJax联手SOA 新一代Web2.0应用程序
- JKD的环境变量设置
- Solaris下如何设置Oracle9i为自动归档模式
- 如何在onMouseDown事件中判断按下的是鼠标左键还是右键
- 我的新发现,与大家分享,本人菜鸟
- Windows系统十大病毒藏身之处