- 浏览: 265440 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (119)
- spring (1)
- hibernate (1)
- struts (0)
- ibatis (0)
- memcache (4)
- mysql (1)
- ant (0)
- junit (0)
- protobuf (1)
- android (1)
- java (15)
- language (1)
- google (1)
- scala (0)
- ruby (0)
- python (0)
- 设计模式 (1)
- think in java (6)
- 服务器 (4)
- javascript (24)
- css (2)
- mongodb (1)
- eclipse (1)
- 并发 (1)
- test (1)
- jquery (3)
- vim (2)
- javaio (1)
- log4j (0)
- jdk (0)
- api (0)
- hadoop (1)
- HashMap (1)
- 数据库 (1)
- webservice (1)
- jvm (0)
- linux (4)
最新评论
-
weilingfeng98:
定制SSLContext
java安全SSL -
weixuanfeng:
楼主有没有用eclipse,Java调用Ant脚本的代码啊。 ...
ant调用步骤
JavaScript中,每个function都拥有一个原型对象prototype,通过这个对象可以为这个类定义各种属性和方法,但是这样定义的属性和方法是所有该类的对象所共有的,效果上和同这个类的父类中继承的字段和方法差不多。通常我们使用function的原型来创建类的方法,而用普通方式来创建类的属性。
1.为什么不用原型来创建属性
因为原型创建的内容是这个类所有对象所共享的,对于一个属性而言,不同的类的对象的值都不一样。如果使用原型对象来创建对象属性,那么任何一个类的对象修改了自己的某个属性,其他对象的相同属性也会被修改。
这么做的本质是因为:属性是各个对象不同的,要求对象自己保存自己该属性的值,而方法对于所有对象而言都是一样的,没有必要每个对象都保存一个方法,只要由类的原型保存一份,各个对象使用方法的时候调用这些方法就可以了。
2.为什么要用原型来保存方法
因为方法对所有类对象来说都是一样的,如果用传统方式定义,那样每个类的对象被定义的时候,该对象都会保存这个方法的信息,这样会耗
费很多资源。而使用原型来保存,所有的方法都保存在原型中,每个对象需要使用方法的时候就调用原型对象中保存的方法。节省了资源。
在类中定义共享的共有方法,私有静态属性和方法,共有静态属性和方法。
//一种更为合适的公用属性和方法的定义,把共有方法在类第一次调用的时候加到类的原型对象中
var Book = function(name){
//公有属性,在构造方法里面来定义,通过this关键字
this.name = name;
//第一次执行该对象的构造方法,这个时候执行下面的代码
//为类的原型对象上定义共有的方法
//所有该类的对象共享相同的共有对象,减小了内存的消耗
if (typeof Book._init == "undefined") {//在第一次定义该类对象的时候会成立
//共有的方法,在原型对象上定义
Book.prototype.setName = function(nname) {
this.name = nname;
};
Book.prototype.getName = function(){
return this.name;
};
Book.prototype.getCount = function(){
addCount();
return count;
};
}
//类已经被定义过了,以后就不再重新定义原型对象上的方法了
Book._init = true;
//利用局部变量来模拟私有静态属性和方法
//这些局部变量定义出来的方法和属性外界不能直接访问,只能通过公有方法访问,
var count = 0;
var addCount = function(){
count++;
}
};
//定义共有静态属性
Book.staticValue = 10;
//定义共有的静态方法
Book.changeValue = function() {
Book.staticValue++;
}
对上面类的调用方法
//这个new操作相当于先创建了一个简单对象,调用了类的构造方法
var book1 = new Book("AJAX");
var book2 = new Book("AJAX1");
alert(book1.getName());
alert(book2.getName());
book1.setName("JAVA");
alert(book1.getName());
alert(book2.getName());
alert(book1.getCount());
alert(book2.getCount());
alert(book1.getCount());
//共有的静态属性和方法要用类名来调用
alert(Book.staticValue);
Book.changeValue();
alert(Book.staticValue);
定义一个对象,希望这个对象拥有一些自己独享的私有信息
方法:直接定义一个匿名的类
//一个单独的对象,期望拥有一些私有有的信息
下面的方法和上面的起到一样的效果,
//利用匿名方法直接调用的方式,来实现一个对象拥有私有的信息
var priObj = (function(name){
//由于这个变量是在方法内定义的,起到的效果就是私有的
var priname = name;
//这个格式要求返回的是一个对象,
//这个对象要求有getName和setName两个方法
return {
getName:function() {
return priname;
},
setName:function(nname) {
priname = nname;
}
};
})("wang");
下面是上面对象的使用方法
//var priObj1=new priObj("a");
//var priObj2=new priObj("b");
上面的做法是错误的,因为这个priObj已经是个定义好的对象了,在定义匿名类的同时就定义好的,所以不能再这么去new了。
//priObj.priname是私有内容,无法访问
alert(priObj.priname);
alert(priObj.getName());
priObj.setName("Lee");
alert(priObj.getName());
alert("");
1.为什么不用原型来创建属性
因为原型创建的内容是这个类所有对象所共享的,对于一个属性而言,不同的类的对象的值都不一样。如果使用原型对象来创建对象属性,那么任何一个类的对象修改了自己的某个属性,其他对象的相同属性也会被修改。
这么做的本质是因为:属性是各个对象不同的,要求对象自己保存自己该属性的值,而方法对于所有对象而言都是一样的,没有必要每个对象都保存一个方法,只要由类的原型保存一份,各个对象使用方法的时候调用这些方法就可以了。
2.为什么要用原型来保存方法
因为方法对所有类对象来说都是一样的,如果用传统方式定义,那样每个类的对象被定义的时候,该对象都会保存这个方法的信息,这样会耗
费很多资源。而使用原型来保存,所有的方法都保存在原型中,每个对象需要使用方法的时候就调用原型对象中保存的方法。节省了资源。
在类中定义共享的共有方法,私有静态属性和方法,共有静态属性和方法。
//一种更为合适的公用属性和方法的定义,把共有方法在类第一次调用的时候加到类的原型对象中
var Book = function(name){
//公有属性,在构造方法里面来定义,通过this关键字
this.name = name;
//第一次执行该对象的构造方法,这个时候执行下面的代码
//为类的原型对象上定义共有的方法
//所有该类的对象共享相同的共有对象,减小了内存的消耗
if (typeof Book._init == "undefined") {//在第一次定义该类对象的时候会成立
//共有的方法,在原型对象上定义
Book.prototype.setName = function(nname) {
this.name = nname;
};
Book.prototype.getName = function(){
return this.name;
};
Book.prototype.getCount = function(){
addCount();
return count;
};
}
//类已经被定义过了,以后就不再重新定义原型对象上的方法了
Book._init = true;
//利用局部变量来模拟私有静态属性和方法
//这些局部变量定义出来的方法和属性外界不能直接访问,只能通过公有方法访问,
var count = 0;
var addCount = function(){
count++;
}
};
//定义共有静态属性
Book.staticValue = 10;
//定义共有的静态方法
Book.changeValue = function() {
Book.staticValue++;
}
对上面类的调用方法
//这个new操作相当于先创建了一个简单对象,调用了类的构造方法
var book1 = new Book("AJAX");
var book2 = new Book("AJAX1");
alert(book1.getName());
alert(book2.getName());
book1.setName("JAVA");
alert(book1.getName());
alert(book2.getName());
alert(book1.getCount());
alert(book2.getCount());
alert(book1.getCount());
//共有的静态属性和方法要用类名来调用
alert(Book.staticValue);
Book.changeValue();
alert(Book.staticValue);
定义一个对象,希望这个对象拥有一些自己独享的私有信息
方法:直接定义一个匿名的类
//一个单独的对象,期望拥有一些私有有的信息
下面的方法和上面的起到一样的效果,
//利用匿名方法直接调用的方式,来实现一个对象拥有私有的信息
var priObj = (function(name){
//由于这个变量是在方法内定义的,起到的效果就是私有的
var priname = name;
//这个格式要求返回的是一个对象,
//这个对象要求有getName和setName两个方法
return {
getName:function() {
return priname;
},
setName:function(nname) {
priname = nname;
}
};
})("wang");
下面是上面对象的使用方法
//var priObj1=new priObj("a");
//var priObj2=new priObj("b");
上面的做法是错误的,因为这个priObj已经是个定义好的对象了,在定义匿名类的同时就定义好的,所以不能再这么去new了。
//priObj.priname是私有内容,无法访问
alert(priObj.priname);
alert(priObj.getName());
priObj.setName("Lee");
alert(priObj.getName());
alert("");
发表评论
-
javascript正则学习
2014-12-06 10:47 825JavaScript中关于正则表达式的有几个关键函数,sear ... -
jquery制作tab标签的最简方式
2012-12-27 15:33 977用jquery制作tab标签,代码很简单,看代码 -
javascript异步获取script资源的实现方法
2012-12-27 15:12 1219研究jquery异步获取script资源的方式,这里贴出来供大 ... -
javascript异步加载几种方式总结
2012-12-26 19:42 10956评价一个网站性能是否高效,除了后端程序的优化,前端性能也不能忽 ... -
javascript中Array对象几种方法总结
2012-08-30 17:28 937//push将新元素添加到一个数组中,并返回数组的新长度值 ... -
jquery总结
2012-07-05 16:32 1059接触jquery比较长时间了,今天总结一下jquery的用法 ... -
javascript禁止空格
2012-05-14 13:29 0今天调试页面,学到一招,禁止输入框空格的绝招,太绝了.推荐给大 ... -
javascript 经典片段
2012-01-15 18:57 932http://www.codebit.cn/ -
prototype属性
2011-11-29 17:54 1066Function.prototype.getName = fu ... -
jquery插件开发
2011-10-27 00:32 1091<!DOCTYPE HTML PUBLIC " ... -
javascript中prototype方法修改
2011-08-12 19:15 1003今天做页面时发现了一个方法replace在匹配字符串时 &l ... -
javascript匹配正则
2011-08-05 00:48 1053正则表达式一直是自己的弱项,最近有机会恶补一下,论坛最近有人发 ... -
javascript集中创建事件方法
2011-08-05 00:26 1044最近看论坛关于动态创建javascript事件的帖子,自己也恶 ... -
收藏一个牛人的blog,学习javascript可以去看看
2011-05-31 18:59 1715http://www.cnblogs.com/rubylouv ... -
15款jquery特效
2011-05-24 14:39 972juqery插件写的几款特效,在项目中可能用到,在这里分享给大 ... -
javascript延迟加载外部js文件
2011-05-18 11:28 2163function _GetJsData(url, callba ... -
window 添加多个onload方法
2011-05-05 20:38 1138function addLoadEvent(fun){ ... -
javascript中的隐藏的对象
2011-04-30 19:41 991Call Apply prototype var person ... -
[转载]Ext.extend的理解 javascript
2011-04-30 14:11 983(转)http://hi.baidu.com/_ollie/b ... -
javascript树
2011-04-23 21:33 2284<html> <head> & ...
相关推荐
本文将详细解释JavaScript中构造函数中公有、私有特权成员以及静态成员的定义和使用方法。 构造函数中的成员可以被分为公有成员和私有成员。公有成员指的是那些可以被对象外部访问的属性和方法,而私有成员则是只能...
在JavaScript面向对象编程中,理解公有属性、私有属性、静态属性以及相应的方法是非常重要的。这些概念有助于我们更好地组织和封装代码,实现更高效的代码复用以及更严格的访问控制。 公有属性和公有方法 公有属性...
在JavaScript编程语言中,公有、私有、特权和静态成员的使用是面向对象编程范式的一部分。它们各自有不同的作用域和访问方式,为对象的设计和行为提供了多样化的手段。下面,我们将详细分析这些成员的不同特点和使用...
return pname + "私有属性+公有属性" + this.name + "调用类的共有方法"; }; ``` **私有方法和属性**: 在JavaScript中,没有真正的私有属性或方法,但可以通过闭包来模拟。在`parent`构造函数中,`pname`变量和`...
- **动态网页**: JavaScript最初设计用来增强网页的交互性,使其从静态内容转变成动态网页。 - **浏览器之战**: 浏览器厂商之间的竞争推动了JavaScript技术的快速发展。 - **标准**: 随着ECMAScript标准的制定,...
JavaScript是一种基于原型(prototype-based)的面向对象编程语言,与基于静态类(class-based)的语言如Java、C++有很大区别。在JavaScript中,对象可以直接创建,无需预先声明类,而且对象的属性和方法可以在运行时...
`test1`方法用于获取私有静态变量的当前值,`test2`方法允许改变私有静态变量的值,而`test3`方法则调用了私有静态方法。通过这种方式,虽然外部不能直接访问私有静态变量,但可以通过实例方法来读取或修改它。 ...
在提供的示例中,`staticPrivateValue`是静态私有变量,`MyObject`构造函数以及访问私有变量的方法都被封装在一个立即执行的函数表达式中,这样既能保持私有性,又能通过`MyObject.prototype`上的方法进行访问。...
在JavaScript中,虽然没有正式的private和public关键字来定义私有和公开成员,但是通过特定的编码约定和模式,我们可以模拟实现私有成员和公开成员的概念。 私有成员和公开成员是面向对象编程(OOP)中的基本概念。...
2. 数组:数组是有序的数据集合,可以使用索引访问元素,JavaScript提供了数组方法如push、pop、shift、unshift、splice、concat、slice等进行操作。 函数与闭包: 1. 函数:JavaScript函数是第一类对象,可以作为...
8. **特权方法**:特权方法是介于公共和私有之间的方法,它们可以从对象外部调用,但可以访问到对象的私有变量。 9. **静态方法**:静态方法是属于类而不是类的实例的方法,通常用于工具函数或不需要实例化对象就...
仅使用静态JavaScript,HTML和CSS创建安全的私有Web应用程序。什么是用户库? Userbase是向静态站点添加用户帐户和用户数据持久性的最简单方法。 可通过非常简单的直接从浏览器访问所有Userbase功能。 无需后端。...
在JavaScript中,Array.prototype上的map、filter和reduce等方法就是高阶函数的例子,它们用于处理数组。 3. **闭包**:闭包是函数能够访问并操作其词法作用域内变量的能力,即使该函数已经执行完毕。理解闭包对于...
10. **闭包**:JavaScript的闭包是理解高级特性的重要概念,模板可能包含闭包的使用,如封装私有变量、模块化等。 11. **异步编程**:Promise和async/await是JavaScript处理异步操作的主要方式,模板可能包含这些...
JavaScript(简称JS)是一种广泛应用于Web开发的轻量级编程语言,主要负责网页的动态交互。在"JS效果大全(以静态页面展示)"这个压缩包中,我们可以期待找到一系列使用JavaScript实现的视觉效果,这些效果通常通过...