标签:prototype javascript 内存分配 继承 多态
在JavaScript中并没有类的概念,但JavaScript中的确可以实现重载,多态,继承。这些实现其实方法都可以用JavaScript中的引用和变量作用域结合prototype来解释。
var Blog = function( name, url ){
this.name = name;
this.url = url;
};
Blog.prototype.jumpurl = ‘‘;
Blog.prototype.jump = function(){
window.location = this.jumpurl;
};
/*
*等同于
Blog.prototype = {
jumpurl : ‘‘,
jump : function(){
window.location = this.jumpurl;
}
};
*/
var rainman = new Blog(‘rainman‘, ‘http://rainman.cnblogs.com‘);
var test = new Blog(‘test‘, ‘http://test.cnblogs.com‘);
这是一个非常简单的例子,但却可以很好的解释prototype内在的一些东西,先看下图的内存分配:

通过上图可以看到下面这些内容:
var Blog = function( name, url ){
this.name = name;
this.url = blogurl;
};
Blog.prototype.jumpurl = ‘‘;
Blog.prototype.jump = function(){
window.location = this.jumpurl;
};
var rainman = new Blog(‘rainman‘, ‘http://rainman.cnblogs.com‘);
var test = new Blog(‘test‘, ‘http://test.cnblogs.com‘);
var Website = function(){};
Website.prototype = Blog.prototype;
var mysite = new Website();
通过上图可以看到下面这些内容:
var Blog = function(){};
Blog.prototype.jumpurl = ‘‘;
Blog.prototype.jump = function(){
window.location = this.jumpurl;
};
var Website = function(){};
Website.prototype = new Blog();
var mysite = new Website();
通过上图可以看到下面这些内容:
JavaScript中new运算符是创建一个新对象。使用方法:
new constructor[(arguments)]其中constructor是必选项。对象的构造函数。如果构造函数没有参数,则可以省略圆括号。
my_object = new Object;
my_array = new Array();
my_date = new Date("Jan 5 1996");
标签:prototype javascript 内存分配 继承 多态
原文地址:http://blog.csdn.net/kevinofneu/article/details/39434987