以下是学习中遇到的问题,望大神给个解释,先谢谢啦!首先是clone函数:function clone(object){
function F(){}
F.prototype = object;
return new F();
}其次是:var Person = {
name : "maoyuanjun",
getName : function(){
return this.name;
}
}
var Author = clone(Person);
Author.books = [];
/*
//这样子声明是错误的
Author.prototype.getBooks = function(){
return this.books;
}
*/
//这样子声明是正确的呢?
Author.getBooks = function(){
return this.books;
}
var author = [];
author[0] = clone(Author);
author[0].name = "myj";
author[0].books = ["java"];
author[1] = clone(Author);
author[1].name = "zlp";
author[1].books = ["javascript"];
alert(author[0].getName() + "," + author[0].getBooks());
alert(author[1].getName() + "," + author[1].getBooks());
上面红色的部分,两个不同的情况,为什么有一个是正确的有一个是错误的呢?
function F(){}
F.prototype = object;
return new F();
}其次是:var Person = {
name : "maoyuanjun",
getName : function(){
return this.name;
}
}
var Author = clone(Person);
Author.books = [];
/*
//这样子声明是错误的
Author.prototype.getBooks = function(){
return this.books;
}
*/
//这样子声明是正确的呢?
Author.getBooks = function(){
return this.books;
}
var author = [];
author[0] = clone(Author);
author[0].name = "myj";
author[0].books = ["java"];
author[1] = clone(Author);
author[1].name = "zlp";
author[1].books = ["javascript"];
alert(author[0].getName() + "," + author[0].getBooks());
alert(author[1].getName() + "," + author[1].getBooks());
上面红色的部分,两个不同的情况,为什么有一个是正确的有一个是错误的呢?
解决方案 »
- 求1个正册表达式
- 求教css调用javascript
- 文本框输入的时候自动列出数据库中匹配的列表?
- 貌似有人明天过生日,丢100分
- 如何实现下面网页的效果.
- HTC 结合输入框,限制输入内容!
- 网页上一个listbox,用客户端事件填充了一些item,如何用一个按钮把这些item内容提交给服务器页面?
- 急求树形菜单,有check框的,选取check框的值能存储到数据库中,或者能从check中取值
- 求高手帮忙解决一个javascript不大却有点难的问题
- IOS下如何实现网页上调用系统短信界面发送短信的功能(需要传递端口号和短信内容)
- JSP做柱状或者线状图表,而且不用第三方工具,怎么实现?求指点
- 请教JS的遍历数据及绑定鼠标事件问题
var Author = clone(Person);
这等于Person是父类,Author是子类.
Author.books = [];
你这样是给子类增加了一个"书库"成员.
Author.getBooks = function(){
return this.books;
}
这样给子类增加方法,读取子类的书库,自然合适,因为是同一级别.
Author.prototype.getBooks = function(){
return this.books;
}
而你这样,是给Author的父类Person增加的方法.
这就好像你给500年前的古人一部手机,可是他却没法用,因为没有手机信号.手机信号在500年后才出现的.
//Author是一个对象的实例,所以他没有prototype这个属性,你错就错在把实例当成构造函数了,你懂的!
Author.prototype.getBooks = function(){
return this.books;
}
*/
[color=#FF0000]
Author.getBooks = function(){
return this.books;
Object对象不一定有该成员,所以前一种错误后面那个直接给对象成员赋值,没什么说的,面向对象基础需加强,请先掌握一些js的面向对象基础再理解和使用prototype
Author.prototype.getBooks = function(){
return this.books;
}prototype是构造函数才有的,对象({})是没有这个属性的,所以会报错。