`
flare
  • 浏览: 124674 次
  • 性别: Icon_minigender_1
  • 来自: 天尽头
社区版块
存档分类
最新评论

javaScript中的new

阅读更多
  
  
    function po(){
	   /// this.age ="super age";
    }
    po.prototype.age ="super prototype age";

    function func() {  	    
        //this.age='name has been changed.';  
    }  

    //func.prototype.age='prototype of func';
    func.prototype = new po();
    var f = new func(); 

    alert(f.age); // 输出super prototype age
    alert(func.prototype.age);  // 输出super prototype age


这段代码会弹出两次super prototype age,原因如下:
对象寻找属性时,如果自己没有这个属性,会在构造函数的propotype所指向/引用的对象中找,看能否找到同名属性,如果构造函数的prototype没有还会找prototype对象的构造函数的prototype对象,
如果找到,就会读取它的值并返回.(这个过程会持续向上,直到持续到Object对象为止,即所谓原型方式的继承).

注意:以上是读,如果写一个属性的话就是直接给这个对象定义了一个属性,读写不对等,在<javascript权威指南>
有很好说明.

本贴内容来自于<领悟 JavaScript 中的面向对象>.

to robbin :
由于yiding_he写道"注:读完本文后请务必接着看完所有回复!"这样对于想要得到其中重要内容的读者来说太花时间了,所以我把几位网友(yiding_he,xieye,afcn0)的观点总结了一下,用于方便想要知道javaScript中的new的含义的新读者.也希望javaeye能够上一套wiki,方便大家对知识进行系统总结.论坛这种需要看完所有回帖才能得到知识的方式还是比不了wiki的方式.

分享到:
评论
7 楼 hax 2008-03-04  
dean的base当然是不错的。Prototype原来想用base的,不过现在还是用了另外一种。它那个也不错,看上去挺爽。见:http://hax.iteye.com/blog/167131。只是我看了它的实现之后,见到它为了达到语法接近传统OO语言,而做了许多簿记,确实付出了一些性能代价。
6 楼 我佛山人 2008-03-04  
看看这种
http://dean.edwards.name/weblog/2006/03/base/
5 楼 hax 2008-02-28  
js的继承是个烦人的事情,我个人不是很喜欢ext这样构造一个临时类的做法。
4 楼 ajaxgo 2008-02-28  
ext中继承的做法避免了,子类在继承父类时复制原型链而多调用一次父类构造函数的问题,解决如下:

var superclass=function() {alert(1);}  //父类
var tempclass=function() {};  //临时用于复制父类prototype链的类
tempclass.prototype=uperclass.prototype; //复制prototype链
var subclass = function() {
    superclass.apply(this,arguments);
    alert(2);
}
subclass=new tempclass();   //这里不但继承了原型链又避免了new父类
subclass.prototype.constructor=subclass;
3 楼 fins 2008-02-28  
Hafeyang 写道
po.prototype.age ="super prototype age";
相当于
class po{
    public static age="super prototype age";
}


完全错误.

如果非要拿java做比较的话
那么  static是不需要new po 也能被访问的
但是 楼主的js里 po一定要 new一个 之后才会有age属性的

不管怎么说 两者都不能用"相当于" 他们连"约等于"都算不上



to hax

你怎么也没睡啊 这么"早"了

2 楼 hax 2008-02-28  
楼上,这个东西是不好“相当”的。原型是有链的。static可没有。
简单说,原型机制是一种求取默认值的机制。
1 楼 Hafeyang 2008-02-27  
po.prototype.age ="super prototype age";
相当于
class po{
    public static age="super prototype age";
}

相关推荐

    【JavaScript源代码】JavaScript中new操作符的原理示例详解.docx

    在JavaScript中,`new`操作符是一个至关重要的概念,它用于通过构造函数创建新的对象实例。构造函数是一种特殊类型的函数,通常用来初始化新创建的对象。接下来我们将深入探讨`new`操作符的工作原理,并通过示例进行...

    详解Javascript中new()到底做了些什么?

    和其他高级语言一样 javascript 中也有 new 运算符,我们知道 new 运算符是用来实例化一个类,从而在内存中分配一个实例对象。 但在 javascript 中,万物皆对象,为什么还要通过 new 来产生对象? 本文将带你一起来...

    JavaScript中new运算符的实现过程解析

    JavaScript中的new运算符是用于创建对象的一个重要关键字。它允许我们从一个构造函数中创建一个特定类型的对象。new运算符在执行时会执行以下步骤: 1. 创建一个新的空对象; 2. 将新对象的原型链(__proto__属性)...

    javascript中new关键字详解

    本文给大家详细介绍了下javascript中new关键字的使用方法,以及javascript 使用new关键字的区别,有需要的小伙伴可以参考下。

    浅谈javascript中new操作符的原理

    javascript中的new是一个语法糖,对于学过c++,java 和c#等面向对象语言的人来说,以为js里面是有类和对象的区别的,实现上js并没有类,一切皆对象,比java还来的彻底 new的过程实际上是创建一个新对象,把新象的...

    javascript中new Array()和var arr=[]用法区别

    在JavaScript中,定义数组有两种常见的方法:使用字面量方式定义数组(var arr=[])和使用构造函数new Array()。这两种方式在功能上看似相同,但在实际使用中,它们之间存在一些细微的差别。下面将详细介绍这两种...

    javascript中数组、对象

    在JavaScript中,数组和对象是两种非常基础且重要的数据结构,它们被广泛应用于各种场景,如数据存储、逻辑处理和对象表示。这篇文章将深入探讨这两种数据类型,以及相关的操作和工具。 **一、数组** 数组在...

    详解javascript new的运行机制

    在JavaScript中,new运算符是一个非常重要的概念,它用于创建一个实例对象。要理解JavaScript中new的运行机制,首先需要了解JavaScript中函数、原型、原型链、this等基础知识。 首先,JavaScript中函数不仅仅可以被...

    Get Programming with JavaScript Next New features of ECMAScript 2015, 2016, epub

    Get Programming with JavaScript Next New features of ECMAScript 2015, 2016, and beyond 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除查看此书详细信息请在美国亚马逊官网搜索此书

    javascript调用delphi中的函数

    3. **JavaScript调用COM组件**:在JavaScript中,可以通过`new ActiveXObject(Progid)`来实例化一个Delphi编写的COM组件,其中`Progid`是组件的程序标识符。然后,可以调用该对象的公开方法和属性。 4. **Delphi...

    Javascript中调用C++函数

    这通常涉及到在JavaScript中调用C++编写的函数,以利用C++的高性能和低级特性。本文将深入探讨如何实现这一目标,特别是在MFC(Microsoft Foundation Classes)框架下。 首先,理解基础原理:JavaScript是一种解释...

    javascript new 需不需要继续使用.docx

    ### JavaScript中的`new`操作符是否仍需使用? 在探讨`new`操作符在现代JavaScript开发中的使用情况之前,我们先来明确一下`new`的基本功能。`new`操作符主要用于实例化对象,通过调用构造函数来创建一个新的对象...

    基于JavaScript的new_kpi KPI管理系统设计源码

    本项目是基于JavaScript的new_kpi KPI管理系统设计源码,包含1386个文件,其中包括320个JavaScript文件、281个PNG图片文件、209个CSS文件、157个HTML文件、75个JAR文件、66个JPG图片文件、66个LESS文件、40个Java...

    JavaScript中使用Json范例

    JavaScript中的JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集。JSON采用完全独立于语言的文本格式,但也使用了类似于C家族语言,包括C、C++、C#、Java、JavaScript、...

    Javascript 面向对象的JavaScript进阶

    在JavaScript中,可以通过构造函数或类来创建对象,并通过定义方法来隐藏具体的实现细节。此外,ES6引入了类的概念,进一步增强了抽象的能力。 **示例代码:** ```javascript class USBDevice { constructor(name)...

    基于Javascript的New Bing AI对话插件设计源码

    本项目是基于Javascript开发的New Bing AI对话插件,包含88个文件,其中包括46个JavaScript脚本文件、22个JSON配置文件、8个HTML页面文件、7个CSS样式表文件、1个gitignore文件、1个LICENSE文件和1个Markdown文档...

Global site tag (gtag.js) - Google Analytics