`

js this prototype

阅读更多
利用 this 实现的公共方法中可以访问类的私有成员(用 var 声明的变量),私有方法(用 function 直接定义的方法);
利用原型扩展实现的方法中,无法调用私有成员和变量。
例子如下所示(把其中注释掉的两行恢复就可以看到区别):

function T(name) {
    
this.Name = name;
    
var x = 5;
    
    
function privateFunc() {
        alert('
in private method: do sometheing');
    }
    
    
this.PublicFunc = function() {
        
// 可以调用私有方法,访问私有成员变量。
        privateFunc();
        alert('x 
= ' + x);
        alert('
in public method: do something else.');
    }
}

//var t = new T('t1');
//
t.PublicFunc();

T.prototype.PublicFunc2 
= function() {
    alert('
in public method 2.');
    
// 下面两行都会出错。在利用 prototype 扩展的方法里无法调用对象的私有方法,也访问不到通过 var 定义的私有成员。
    // alert(x);
    // privateFunc();
}

var t2 = new T('t2');
t2.PublicFunc();
t2.PublicFunc2();
posted on 2005-03-02 09:54 木野狐(Neil Chen) 阅读(812) 评论(3)  编辑 收藏 所属分类: 网页技术
<!---->
写的好!少而精,这才是程序精神
http://www.crockford.com/javascript/private.html
<script language="JavaScript">
<!--
function test1(){
this.a = "a";
function b(){
return this.a;
}
function c(){
return "aaa";
}
this.d= function(){
return this.a;
}
this.e = function(){
return c();
}
this.f = function(){
return b();
}
}

var d = new test1();
alert(d.d());
alert(d.e());
alert(d.f());
//-->
</script>
大哥能解释一下为什么d.f()会返回undefined?
有人说在b()里this改变了,但我用constructor返回的却是test1,我实在搞不清楚怎么回事了,还望指点
回答楼上:
因为function b(){
return this.a;
}
是一个私有方法,不能访问类对象this.a;
但可以访问:
用var 定义的成员
如:
function test1(){
var aaa="ldq...";
function b(){
return aaa;
}
this.otherFunc=function(){
alert(b());
}
这样就可以!
<!---->
分享到:
评论

相关推荐

    JS:prototype用法

    ### JS:prototype用法详解 #### 一、概念解析与基本使用 `prototype`是JavaScript中一个非常重要的概念,尤其自IE4及其后续版本引入以来,成为开发人员扩展内置对象功能的强大工具。`prototype`主要服务于面向...

    JS中的prototype

    JavaScript中的`prototype`是语言核心概念之一,它在对象创建、继承和方法共享中起着关键作用。在JavaScript中,每个对象都有一个`prototype`属性,这个属性引用了一个对象,通常用于实现对象间的继承。理解`...

    JavaScript的prototype

    JavaScript中的`prototype`是一个核心概念,它涉及到对象继承和函数原型。在JavaScript中,每创建一个函数,该函数就会自动获得一个名为`prototype`的属性,这个属性是一个对象,用于实现对象间的继承。同时,每个...

    js遍历属性 以及 js prototype 和继承

    在JavaScript中,遍历属性、理解`prototype`和掌握继承机制是编程中不可或缺的基本技能。本文将深入探讨这些概念,并通过实例来加深理解。 首先,让我们来看如何遍历JavaScript对象的属性。JavaScript提供了多种...

    javascript中类和继承(代码示例+prototype.js)

    本文将深入探讨JavaScript中的类和继承,并结合`prototype.js`文件中的示例进行解析。 ### 类的概念与模拟 在JavaScript中,我们通常使用函数来模拟类的行为。一个函数可以看作是一个类的定义,通过`new`关键字来...

    prototype.js中文手册

    Prototype.js 是一个开源JavaScript库,由Sam Stephenson于2005年创建,主要用于简化DOM(文档对象模型)操作,增强JavaScript的面向对象编程能力,以及提供实用的函数扩展。它在Web开发中扮演着重要的角色,尤其在...

    开源JS包Prototype使用指南

    ### 开源JS包Prototype使用指南 #### 1.1 Prototype是什么? Prototype是一个由Sam Stephenson编写的JavaScript库,它提供了一套简洁、高效且易于使用的API来简化Web应用开发过程中的许多常见任务。该库专注于简化...

    prototype 开发应用手册,笔记,prototype.js文件下载

    总结,Prototype.js是JavaScript开发中的一个重要工具,它通过一系列强大的API和设计模式,使得JavaScript的开发更加高效、优雅。通过学习和掌握Prototype,开发者可以更好地驾驭JavaScript,创造出更具交互性的Web...

    js中prototype1

    在JavaScript中,`prototype`是一个非常重要的概念,它涉及到对象的继承和方法共享。每个函数(在JavaScript中,函数也是一种对象)都有一个`prototype`属性,这个属性指向一个对象,这个对象的用途是为通过该函数...

    Prototype

    Prototype 是一个广泛使用的JavaScript库,设计目的是为了简化JavaScript的开发,尤其是处理DOM操作、AJAX交互以及事件处理等方面的工作。它通过提供一系列实用的工具函数和面向对象的特性,极大地提高了JavaScript...

    prototype-1.6.0.2.js.rar

    2. **Function.prototype.bind**:让函数拥有指定的上下文(this值),解决了JavaScript中this动态绑定的问题。 3. **Element**和**$$**:提供了一套强大的DOM操作接口,Element对象可以对HTML元素进行各种操作,$$...

    JS利用prototype给类添加方法操作详解

    在JavaScript中,`prototype`是实现面向对象编程的关键特性,它允许我们为类(或称为构造函数)添加方法。在本文中,我们将深入探讨如何利用`prototype`为类添加方法,以及这种方法背后的原理。 首先,我们需要理解...

    JavaScript中prototype的使用

    JavaScript中的`prototype`属性是实现面向对象编程的关键概念之一,尤其在JavaScript中,它用于实现对象的继承。本文将深入探讨`prototype`的含义、作用以及如何使用。 1. **什么是prototype** 在JavaScript中,每...

    prototype-1.4.0源码解读.js

    Prototype 提供了诸如`String.prototype.parseColor`、`Function.prototype.bind`等工具,前者用于解析颜色字符串,后者实现函数绑定,确保函数的`this`值始终指向预期的对象。 通过分析Prototype 1.4.0的源码,...

    javascript的prototype继承

    在JavaScript中,每个函数都有一个`prototype`属性,这个属性是一个对象,它的作用是当试图访问一个对象的属性时,如果该对象自身没有这个属性,就会去查找它的原型对象,以此类推,直到找到属性或者到达原型链的...

    prototype.js开发者手册

    《prototype.js开发者手册》是针对JavaScript库Prototype的一份详尽指南,旨在帮助开发者深入理解和有效利用这个强大的工具。Prototype.js是开源的JavaScript框架,它扩展了JavaScript的基本对象,提供了类和面向...

    prototype 1.3 源码解读

    Prototype 是一个轻量级的 JavaScript 库,它简化了 DOM 操作,并提供了一系列便捷的方法来处理对象、数组等基本类型。版本 1.3 相对于之前的 1.2 版本有了不少改进与增强,包括但不限于: - 注释的完善。 - 对象...

    了解JavaScript中的prototype (实例)

    JavaScript中的`prototype`是理解面向对象编程的关键概念之一。它是一种机制,允许对象共享属性和方法,从而实现代码复用。在JavaScript中,每个函数(包括构造函数)都有一个内置的`prototype`属性,这个属性指向一...

    Prototype入门

    Prototype.js 是一个著名的JavaScript库,由Sam Stephenson编写,它极大地扩展了JavaScript的功能,并且对Ajax提供了良好的支持。这个库在Web开发领域具有很高的实用性和学习价值,特别适合B/S架构的开发人员和...

    js中prototype用法详细介绍.docx

    ### JavaScript中的Prototype用法详解 #### 一、引言 在JavaScript中,`prototype`是一个非常重要的概念,尤其是在面向对象编程(OOP)方面。通过理解并掌握`prototype`的使用,开发者可以更加灵活地扩展对象的功能,...

Global site tag (gtag.js) - Google Analytics