WEB开发网
开发学院网页设计JavaScript JavaScript : 使用面向对象的技术创建高级 Web 应... 阅读

JavaScript : 使用面向对象的技术创建高级 Web 应用程序

 2010-09-14 13:27:00 来源:WEB开发网   
核心提示: 图 5实例继承其原型某些读者可能已经注意到图 4 中对 hasOwnProperty 和 isPrototypeOf 方法的调用,这些方法是从哪里来的呢?它们不是来自 Dog.prototype,JavaScript : 使用面向对象的技术创建高级 Web 应用程序(10),实际上,在

JavaScript : 使用面向对象的技术创建高级 Web 应用程序

图 5实例继承其原型

某些读者可能已经注意到图 4 中对 hasOwnProperty 和 isPrototypeOf 方法的调用。这些方法是从哪里来的呢?它们不是来自 Dog.prototype。实际上,在 Dog.prototype 和 Dog 实例中还可以调用其他方法,比如 toString、toLocaleString 和 valueOf,但它们都不来自 Dog.prototype。您会发现,就像 .NET Framework 中的 System.Object 充当所有类的最终基类一样,JavaScript 中的 Object.prototype 是所有原型的最终基础原型。(Object.prototype 的原型是 null。)

在此示例中,请记住 Dog.prototype 是对象。它是通过调用 Object 构造函数创建的(尽管它不可见):

Dog.prototype = new Object();

因此,正如 Dog 实例继承 Dog.prototype 一样,Dog.prototype 继承 Object.prototype。这使得所有 Dog 实例也继承了 Object.prototype 的方法和属性。

每个 JavaScript 对象都继承一个原型链,而所有原型都终止于 Object.prototype。注意,迄今为止您看到的这种继承是活动对象之间的继承。它不同于继承的常见概念,后者是指在声明类时类之间的发生的继承。因此,JavaScript 继承动态性更强。它使用简单算法实现这一点,如下所示:当您尝试访问对象的属性/方法时,JavaScript 将检查该属性/方法是否是在该对象中定义的。如果不是,则检查对象的原型。如果还不是,则检查该对象的原型的原型,如此继续,一直检查到 Object.prototype。图 6 说明了此解析过程。

JavaScript : 使用面向对象的技术创建高级 Web 应用程序

图 6在原型链中解析 toString() 方法

上一页  5 6 7 8 9 10 

Tags:JavaScript 使用 面向

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接