论坛首页 Web前端技术论坛

javascript进阶之对象篇

浏览 43736 次
该帖已经被评为精华帖
作者 正文
   发表时间:2006-04-22  
只是说明解释性语言的本质是一样的,基本可以互换

哪一种语言优雅,哪一种语言更实用其实都不是绝对的
0 请登录后投票
   发表时间:2006-04-23  
说穿了,所有语言的面向对象都是模拟出来的,呵呵。

如果两种语言同样可以解决问题,我会选择简单的;

如果两者简单程度一样,我会选择优美的;

如果都一样,我会选择比较熟悉的。
0 请登录后投票
   发表时间:2006-04-23  
呵呵,我选择熟悉的以及实用的Java
0 请登录后投票
   发表时间:2006-08-31  
看了后受益菲浅!!!
0 请登录后投票
   发表时间:2006-09-11  
引用
居然alert(Object.prototype.isPrototypeOf(Person));//true也是true.搞不懂

这说明Function也是从Object继承下来的。
因为alert(Object.prototype.isPrototypeOf(Function))也是true。
0 请登录后投票
   发表时间:2006-09-11  
benny 写道
引用
居然alert(Object.prototype.isPrototypeOf(Person));//true也是true.搞不懂

这说明Function也是从Object继承下来的。
因为alert(Object.prototype.isPrototypeOf(Function))也是true。



alert(Object.prototype.isPrototypeOf(Function))
alert(Function.prototype.isPrototypeOf(Object))

楼上能用你的理论解释一下吗?
0 请登录后投票
   发表时间:2006-09-12  
进行一系列测试:
alert(Object.prototype.isPrototypeOf(Function)); // true

因此推断出 Function继承自Object

alert(Function.prototype.isPrototypeOf(Person)); // true

因此推断出 Person继承自Function (这是当然的,因为Person就是Function的一个实例)

所以最终可以得出
alert(Object.prototype.isPrototypeOf(Person)); // true


进一步测试
alert(Object.prototype.isPrototypeOf(Object.prototype)); // true
alert(Object.prototype.isPrototypeOf(Person.prototype)); // true

因此又可以推断出prototype这种对象也是继承自Object
继续测试可知Array Date RegExp Error都是继承自Object

但是注意下面的测试结果
alert(Object.prototype.isPrototypeOf(123)); // false
alert(Object.prototype.isPrototypeOf("123")); // false
alert(Object.prototype.isPrototypeOf(false)); // false

alert(Object.prototype.isPrototypeOf(new Number(123))); // true
alert(Object.prototype.isPrototypeOf(new String("123"))); // true
alert(Object.prototype.isPrototypeOf(new Boolean(true))); // true

可见JavaScript如同Java,对于一些基本数据类型也有原生类型的概念,这些原生类型的数据不是Object的实例。
特别要注意的是这里的"123",它是原生类型;而new String("123")就不是,这一点跟Java不一样。Java中String是没有原生类型的。

个人拙见,望多多指教!
0 请登录后投票
   发表时间:2006-09-13  
alert(Object.prototype.isPrototypeOf(Function)); // true

因此推断出 Function继承自Object


ps:我这样理解 Function=Object(){},意思是Function 是Object的一个实例 但是他本身可以作为“对象构造器”。

function  Person()  {
    this.name = 'people';
} 
var x= new Person();
alert(x['name']);

//与
var x ={
   name: 'people'
}

alert(x['name']);
//与
var x =eval("x={name: 'people'}");
alert(x['name']);
都是生成一个Object对象。

引用
alert(Function.prototype.isPrototypeOf(Person)); // true

因此推断出 Person继承自Function (这是当然的,因为Person继承Function)


ps:我这样理解 person=Function(){},意思是Person是Function的一个实例,但是他本身也是Function对象,所以可以作为“对象构造器”来使用。

引用
所以最终可以得出
alert(Object.prototype.isPrototypeOf(Person)); // true


ps:
我这样理解 person=Function(){},意思是person是Function“对象构造器”的构造的一个“对象构造器”对象  但不管他们功能如何 他们都是对象 都是Object的实例。
但是
 
 alert(Object.prototype.isPrototypeOf(o));//true
 alert(Person.prototype.isPrototypeOf(o)); // true		
 alert(Function.prototype.isPrototypeOf(o)); //false 

我的理解o是“对象构造器”person构造的一个“Object”对象 ,而不是“对象构造器”(Function)对象,不管怎么说,还是对象,所以只有第三句是不成立的。

引用
进一步测试
alert(Object.prototype.isPrototypeOf(Object.prototype)); // true
alert(Object.prototype.isPrototypeOf(Person.prototype)); // true

因此又可以推断出prototype这种对象也是继承自Object
继续测试可知Array Date RegExp Error都是继承自Object


ps:我这样理解Function  prototype Array Date RegExp Error都是Object的实例(语言内建的),typeof 这些个东东当然都是Object 的,可能Function 覆盖了Object的一些方法 所以我们打印的时候出现的的是‘function’。



引用
但是注意下面的测试结果
alert(Object.prototype.isPrototypeOf(123)); // false
alert(Object.prototype.isPrototypeOf("123")); // false
alert(Object.prototype.isPrototypeOf(false)); // false

alert(Object.prototype.isPrototypeOf(new Number(123))); // true
alert(Object.prototype.isPrototypeOf(new String("123"))); // true
alert(Object.prototype.isPrototypeOf(new Boolean(true))); // true

可见JavaScript如同Java,对于一些基本数据类型也有原生类型的概念,这些原生类型的数据不是Object的实例。
特别要注意的是这里的"123",它是原生类型;而new String("123")就不是,这一点跟Java不一样。Java中String是没有原生类型的

引用
个人拙见,望多多指教
个人拙见,望多多指教
0 请登录后投票
   发表时间:2006-09-19  
zkj_beyond 写道
Function除外 用new定义的不一定都是对象。


这句话我不理解,能否讲解一下呢?
0 请登录后投票
   发表时间:2006-09-19  
jianfeng008cn 写道
zkj_beyond 写道
Function除外 用new定义的不一定都是对象。


这句话我不理解,能否讲解一下呢?

<SCRIPT LANGUAGE="JavaScript">
<!--
alert(typeof(new Function()))
//-->
</SCRIPT>
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics