关于this.constructor的问题
function Rectangle(a,b)
{
this.width=a;
this.height=b
}
function compute_area( )
{
alert(this.constructor)
alert(this.constructor=="Rectangle")//问题就在这里,这个this.constructor倒底是什么呢。为什么?
return this.width * this.height;
}
var page = new Rectangle(8.5, 11);
page.area = compute_area;
var a = page.area( ); // a = 8.5*11 = 93.5
alert(a)
问题点数:20、回复次数:9Top
1 楼DeluxWorld(曾经的你)回复于 2006-03-03 20:30:22 得分 0
个人理解:
var page = new Rectangle(8.5, 11);
//构造一个Rectangle赋给page变量(对象)
而compute_area是page的一个属性,这样,this.constructor
就是构造page对象的函数Top
2 楼zhaoxiaoyang(梅雪香@深圳)回复于 2006-03-03 20:46:41 得分 0
Date
PROPERTIES
constructor Property
This property returns a reference to the function that created the Date object's prototype.
Syntax: object.constructorTop
3 楼zshaiqi(竹无心)回复于 2006-03-03 21:17:38 得分 0
可是第一个alert出来的确是 Rectangle()。所以不是很明白。
Top
4 楼ice_berg16(寻梦的稻草人)回复于 2006-03-03 22:17:54 得分 0
function Rectangle(a,b)
{
this.width=a;
this.height=b
}
function compute_area( )
{
alert(this.constructor)
alert(this.constructor=="Rectangle")//问题就在这里,这个this.constructor倒底是什么呢。为什么?
return this.width * this.height;
}
var page = new Rectangle(8.5, 11); //创建一个Rectangle对象
//给该对象增加一个新方法compute_area,方法中的this指page对象
//所以this.constructor指page的构造函数,即Rectangle
page.area = compute_area;
var a = page.area( ); // a = 8.5*11 = 93.5 //执行page对象的方法,
alert(a)Top
5 楼zshaiqi(竹无心)回复于 2006-03-04 09:43:43 得分 0
楼上的,我也是这么想的,可是第二个alert的值怎么是false,应该是true吧。所以我才纳闷呢。Top
6 楼ice_berg16(寻梦的稻草人)回复于 2006-03-04 13:19:27 得分 0
可是第二个alert的值怎么是false,应该是true吧。所以我才纳闷呢。
-------------
应该是
alert(this.constructor==Rectangle)
才对,
this.constructor的类型是function,你和字符串比较当然是false了Top
7 楼zshaiqi(竹无心)回复于 2006-03-06 16:57:13 得分 0
一语惊醒梦中人。Top
8 楼KimSoft(革命的小酒天天醉-http://blog.csdn.net/kimsoft/)回复于 2006-03-06 17:08:23 得分 0
呵呵,看看constructor 的用法就知道了。
constructor 属性
表示创建对象的函数。
object.constructor
必需的 object是对象或函数的名称。
说明
constructor 属性是所有具有 prototype 的对象的成员。它们包括除 Global 和 Math 对象以外的所有 JScript 固有对象。constructor 属性保存了对构造特定对象实例的函数的引用。 例如:
x = new String("Hi");
if (x.constructor == String)
// 进行处理(条件为真)。
或
function MyFunc {
// 函数体。
}
y = new MyFunc;
if (y.constructor == MyFunc)
// 进行处理(条件为真)。
Top
9 楼KimSoft(革命的小酒天天醉-http://blog.csdn.net/kimsoft/)回复于 2006-03-06 17:11:30 得分 0
关键是理解 compute_area 里的 this 指的是什么。Top




