阅读更多

15顶
6踩

Web前端

原创新闻 再论JavaScript的继承

2008-10-20 14:01 by 资深编辑 ╱/罒呍唲 评论(11) 有10355人浏览

Yahoo 的Stoyan Stefanov 发表了一篇好文章-JavaScript的 class-less对象

他将这篇文章发表在了JavaRanch上,在Java社区来讨论他们的不同之处。

他深入的研究了:
*JavaScript对象

这是一个空对象
var myobj = {};

你可以添加一些有用的功能:
myobj.name = "My precious";
myobj.getName = function() {return this.name};


你也可以用另一种方法来创建对象和添加属性:
var another = {
  name: 'My other precious',
  getName: function() {
    return this.name;
  }
};




*构造函数
这是一个创建构造函数的例子:
function ShinyObject(name) {
  this.name = name;
  this.getName = function() {
    return this.name;
  }
}


如今你可以这样来创建对象,更像Java:
var my = new ShinyObject('ring');
var myname = my.getName(); // "ring"


*函数的对象和属性

*继承

*复制继承的属性
假设你有这些对象:
var shiny = {
   shiny: true,
   round: true
};

var normal = {
  name: 'name me',
  getName: function() {
    return this.name;
  }
};


如何来得到这些属性:
function extend(parent, child) {
  for (var i in parent) {
    child[i] = parent[i];
  }
}

extend(normal, shiny); // inherit
shiny.getName(); // "name me"


*Crockford的beget对象:

function begetObject(o) {
  function F() {}
  F.prototype = o;
  return new F();
}



*YUI的扩展()
function extend(Child, Parent) {
  var F = function(){};
  F.prototype = Parent.prototype;
  Child.prototype = new F();
}

来自: ajaxian.com
15
6
评论 共 11 条 请登录后发表评论
11 楼 zhou363667565 2011-12-27 15:35
对学习javascript 新手来说 确实 是好东西。
10 楼 zlm_525 2010-09-13 17:45
hejin1026 写道
有什么新颖的地方吗?完全没有。。。。就把js常用的继承方式搬出来了,骗人,气死我了,一来就看到这种吸引人眼球的东西,这种文章还放在那么前面,有什么价值吗?

你还能有什么出息呢?
9 楼 mesmes 2009-09-29 14:49
function extend(Child, Parent) {
  var F = function(){};
  F.prototype = Parent.prototype;
  Child.prototype = new F();
  
  [color=red]Child.prototype.constructor = Child[/color]
}

个人觉得加一句比较好点,不知道大家怎么想?
8 楼 lemonweirui 2009-09-15 12:48
最后那两段终于亮了
7 楼 zxyjava19831226 2008-11-10 20:34
又被忽悠一把.郁闷
6 楼 caiceclb 2008-11-06 17:30
对我这种菜鸟还是蛮新鲜的!自嘲一下。
5 楼 hejin1026 2008-10-21 17:55
有什么新颖的地方吗?完全没有。。。。就把js常用的继承方式搬出来了,骗人,气死我了,一来就看到这种吸引人眼球的东西,这种文章还放在那么前面,有什么价值吗?
4 楼 xmpp 2008-10-21 09:59
这文章也....
3 楼 weidewei 2008-10-20 19:02
2 楼 egmkang 2008-10-20 18:34
没看出来什么景致
1 楼 seven_cuit 2008-10-20 16:37
正在学习javascript的对象系统,谢谢楼主分享

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Java国际认证(SCJP)典型试题1000例(中文高清影印版).zip

    Java国际认证(SCJP)典型试题1000例(中文高清影印版)

  • java 程序员 笔试题_程序员笔试考试题和答案(java)

    程序员笔试考试题和答案(java) 1. Oracle 数据库属于以下哪种数据库类型?BA . 网状数据库B. 关系数据库C. 层次数据库D. 面向对象的关系数据库2. 转发 HTTP 请求一般有两种方法,response.sendRedirect 和 RequestDispatcher.forward,哪种方法可以保存 request.setAttribute()中设置的值不丢 BA. send...

  • java面试笔试题大汇总 ~很全面(2)

    面试要了解的问题 简单介绍一下您的情况? 您怎样描述自己? 您为何要选择我公司? 您为了这次面试做了哪些准备工作? 我们为什么要雇佣您? 为什么您要应聘这个职位? 您期望的薪金待遇是多少? 什么对您来说更加重要 — 工作还是金钱? 您期望从此职业中获得什么 — 金钱、声望还是事业成就感? 如果其他公司为您提供了更高的薪水,您会离开我公司吗? 您生活的最终目标是什么? 您怎样

  • 面试题总结(自己总结)

    1、关于JaVa的描述哪一个是错误的(   ) A.Java是一种解释性语言    B.Java是面向对象的语言 C.Java通过不同硬件平台安装同一个JVM实现来实现的可移植性 D.Java可以通过API调用编译语言(如C或C++)编写的函数。 2、哪个不是Java关键字(    ) A.sizeof  B. void  C. const  D. super 3、Java语言具有

  • java scjp 试题_JAVA认证历年真题:SCJP考试真题和解析

    1. Which of the following range of short is correct?A.-27 -- 27-1B.0 -- 216-1C.–215 -- 215-1D.–231 -- 231-1翻译下面哪些是short型的取值范围。答案C解析 短整型的数据类型的长度是16 bits,有符号。另外需要说明的是java中所有的整(Integral)数(包括byte,short,in...

  • 60道SCJP考试真题精解

    60道SCJP考试真题精解 短整型的数据类型的长度是16 bits,有符号。另外需要说明的是java中所有的整(Integral)数(包括byte,short,int,long)全是有符号的。 Java的标识符可以以一个Unicode字符,美元符($)开始,下滑线(_),后续字符可以是前面的符号和数字,没有长度限制,大小写敏感,不能是保留字。 十六进制数以0x开头,long型数以L(大小写均可,一般使用大写,因为小写的l和数字1不易区分)。 String类型可以直接使用+进行连接运算。

  • scjp题目解析(五)

     Which of the following are correct?128 >> 1 gives 64 128 >>> 1 gives 64 128 >> 1 gives –64 128 >>> 1 gives –64 Select all correct answers 首先把128化成二进制形式右移就是>>1就是去掉一个最低位就是了128/2=64 064/2=32 0

  • java scjp 试题_JAVA认证历年真题:SCJP考试真题和解析[1]

    JAVA认证历年真题:SCJP考试真题和解析[1]例题1:choose the three valid identifiers from those listed below.a. idolikethelongnameclassb. $bytec. constd. _oke. 3_case解答:a, b, d点评:java中的标示符必须是字母、美元符($)或下划线(_)开头。关键字与保留字不能作为...

  • 中兴软创笔试题二

    面试测试题2 (一)、选择题(4′×10): (1)Which of the following range of short is correct?  C A. -27 ~ 27-1   B. 0 ~ 216-1       C. -215 ~ 215-1   D. -231 ~ 231-1   (2)Which declarations of identifiers are lega

  • SCJP认证套题解析之一

    google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//<script type="text/javascript"

  • 历年真题分析一

    写作本文的目的是总结自己学习java的知识点,也可以方便其它人学习java,个人的感觉是java确实是一个很好的编程语言,而学习好java必须先掌握java的特点,而这些特点在scjp的套题中可以充分的体现出来,套题考核的知识点非常的到位,必须对java非常了解才可以做好这些题。    1、Which of the following range of short is correct? -27

  • SCJP认证套题解析卷1

    google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";google_ad_width = 336;google_ad_height = 280;//<script type="text/java

  • 9道scjp题310-035解析

    1.  Which  of  the  following  range  of  short  is  correct?  A.  -27  --  27-1  B.  0  --  216-1  C.  ?215  --  215-1  D.  ?231  --  231-1  翻译下面哪些是short型的取值范围。  答案C  解析短整型的数据类型的长度是16  bits,有符号。另外需要说

  • Java技能测试试卷二及答案

    Java技能测试试卷二 第一部分:基础部分    软件基础 (每题3分,共18分)  1、十进制数10相当于二进制数的多少?   1010  2、请写出五个基本数据类型。   byte/short/int/long/boolean    3、程序的控制语句有哪些?      4、break语句和continue语句有什么区别?   break是指中断当前语句块/

  • SCJP考题解析(简体)---免费

    在原繁体版的基础上,使用google翻译过来的,不保证翻译效果!(前两周我已经过了,哈俣!)

  • java通用面试题(一)

      1.Which of the following range of short is correct?-128 -- 127 -32768 -- 32767 -215 -- 215-1 -231 -- 231-1 2、Which declarations of identifiers are legal?A. $personsB. TwoUsersC. *pointD. thisE. _e

  • SCJP真题库更新16

    QUESTION 76 A class games.cards.Poker is correctly defined in the jar file Poker.jar. A user wants to execute the main method of  Poker on a UNIX system using the command:  Java games.cards.Poker W...

  • 试题

    Given: Integer.valueOf(1).equals(Long.valueOf(1)) which statement below is right? A.It doesn’t compile. B.The value is true. C.The value is false. D.It throws exception in run-time. What best desc...

  • SCJP试题十六

    1.             Wich three are valid declarations of a char?(choose three)A   char c1=064770;B   char c2=’face’;C   char c3=0Xbeef;D   char c4=/u0022;E   char c5=’/iface’;F   char c6=’/ufac

Global site tag (gtag.js) - Google Analytics