js如何封装函数,求最简单的例子

fihuang 2010-10-24 12:14:33
js里能否像c#或者java里的类一样,把很多方法封装在这个类里面,然后调用这个方法的时候可以用class.Fun();这样的形式来调用。
求一个最简单的完整的例子(麻雀虽小五脏俱全)。
万分感谢!
时刻关注!
...全文
26119 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangshaolongjj 2010-10-26
  • 打赏
  • 举报
回复
我觉得是好事阿,我更喜欢js编程,相对于java来说
fihuang 2010-10-26
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 theforever 的回复:]

JS可比C#和JAVA难多了.就是因为它的灵活,换句话说,难捉摸.

要说学过的语言种类,26个字母开头的,我学过大半.只有VC和JS,是觉得最难的.VC的难,难在它的组织结构上,是一种令人讨厌的难.而JS的难,是难在它的过于灵活上,如烟雾一样,难有固定形迹,但这是一种令人觉得总是值得玩味的难.所以我说我不敢去总结JS,也信不过任何一个非大师级别的人对JS的总结.

要想学透JS,我想最……
[/Quote]
大哥 你干嘛老揪着“总结”不放 你看看前后语境
我是总结大家的回复 不是总结自己对js的理解 我要是有总结的水平 我也不来问大家了
我觉得js的“灵活”是最难的最令人讨厌的 它没有给你固定的定义
举个例子,如果你要运货,c#java给你货车;你想全家去户外野餐,c#java给你suv。
而js呢?不管你是什么用途,它都只是给你一辆车,然后你按照自己的需求去改装。更关键的是,从外面开,你分不清楚这辆车到底是干什么的?

另外,js虽说灵活 但是这个“灵活”到底是优势还是劣势呢 听说下一代的js开始考虑class public private这些关键字了 不知道是不是真的

谢谢
  • 打赏
  • 举报
回复
JS可比C#和JAVA难多了.就是因为它的灵活,换句话说,难捉摸.

要说学过的语言种类,26个字母开头的,我学过大半.只有VC和JS,是觉得最难的.VC的难,难在它的组织结构上,是一种令人讨厌的难.而JS的难,是难在它的过于灵活上,如烟雾一样,难有固定形迹,但这是一种令人觉得总是值得玩味的难.所以我说我不敢去总结JS,也信不过任何一个非大师级别的人对JS的总结.

要想学透JS,我想最好是有JS解释器的源码,至少能知道JS解释器的行为结果,这样才能从根本上了解JS.
比如类的构造方式,种类虽多,但最后JS解释器总是会把它们转换为一种内部形式.
也就是说,知道起点和终点,中间的过程就能想得通了.反过来,知道了终点,那么其它的起点是否可以到达终点,也就容易判断,容易走通了.
fihuang 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 fihuang 的回复:]

js区的朋友真是别具一格 太太太太太热情了

认真的看过了大家的回复,也谢谢wodeguozili推荐的书。
现在我总结一下,封装可以有两种方法:
1.以类的形式封装
2.对象字面量的形式构造对象(wodeguozili在4楼说的,我在百度上没有搜到更多的信息,可能搜索关键字不对)

第一种很好理解,但是第二种不太理解,请问这两种有什么区别?
谢谢!
[/Quote]哪位朋友来回答一下我的问题 谢谢
fihuang 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 cj205 的回复:]

javascript是一门语言。如果想写一个库了,还对语言的特性不了解,你觉得靠谱吗
编程范式和设计模式不是一回事。
FP/OOP/OP==
什么叫面向对象中的TOP呢
[/Quote]说到面向对象编程语言 大家会说c#和java 不会说c++和js
另外,我都说的很清楚了,我不知道这种设计的专业术语是什么,所以让大家给我一个专业术语,我好去百度搜索资料。
Mr-Jee 2010-10-25
  • 打赏
  • 举报
回复
javascript是一门语言。如果想写一个库了,还对语言的特性不了解,你觉得靠谱吗
编程范式和设计模式不是一回事。
FP/OOP/OP==
什么叫面向对象中的TOP呢
fihuang 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 cj205 的回复:]

c#也只是一门语言,虽然里面囊括了几种编程范式,但是我相信做C#的童鞋很多都对此不是很了解。
看文档也要选择性看啊~对吧

如果LZ对此感兴趣,我到建议LZ看点书,比如john resig的书,或者博客也挺好的~~~
[/Quote]我不知道你说的编程范式是指什么 我在c#里从来没听到过 可能是指设计模式
设计模式思想在不同的语言里是互通的的 这方面我很有信心 我不属于你说的那些c#童鞋

我最近开始搞js 想设计一个通用类 里面都是一些方法:比如检查字符串是不是邮箱、是不是邮编、是不是手机号等等,因为这些方法是可以通用的,所以把他们封装在一起。
并且,在调用里面的一个方法时,不必先new一个对象,而是直接用 "class"."function()" 的形式调用。
刚好我上面的那种方式符合我的预期,所以想把这种方式搞搞清楚。


再说句题外话
c#和java是面向对象的top了吧
js虽说比他们两个要灵活 但是这个“灵活”到底是优势还是劣势呢 听说下一代的js开始考虑class public private这些关键字了 不知道是不是真的
kaifadi 2010-10-25
  • 打赏
  • 举报
回复
JS没有严格的类定义,从字面上就能看得到的!没有各种类作用域关键字(PUBLIC,PRIVATE,PROTECTED等)!

但是却有类似的功能,楼主可以看看类定义的方式,有工厂,动态,原型等!一般都是根据实际需要灵活定制的,并没有规定哪种是正规与不正规!符合需要就好!
kaifadi 2010-10-25
  • 打赏
  • 举报
回复
哈哈,热门的JS,发个帖,保证第二天以后,你的帖子如果没有人顶,马上沉没到第二页或者第三页去!

其他不热门的版块,你发个帖,几天以后还在那不动!
Mr-Jee 2010-10-25
  • 打赏
  • 举报
回复
c#也只是一门语言,虽然里面囊括了几种编程范式,但是我相信做C#的童鞋很多都对此不是很了解。
看文档也要选择性看啊~对吧

如果LZ对此感兴趣,我到建议LZ看点书,比如john resig的书,或者博客也挺好的~~~
fihuang 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 cj205 的回复:]

引用 21 楼 fihuang 的回复:

引用 19 楼 cj205 的回复:

对象。就是对象~~
天啊 对象也要有一定规则的
大哥 这样的形式专业术语怎么说 我去百度搜一下 给个关键字
谢了
我不反对学院派,但是如果是学院派的话,前提是要有基础吧~~~!
所以我建议你先看看书。从哪开始呢,编程范式开始~~
[/Quote]我是搞c#的 编程基础还行
看这份文档毫无难度http://wenku.baidu.com/view/b7c3132ded630b1c59eeb52d.html
但是这篇文档里没有我上面有疑问的那种方式,我想搜一下资料,根本不知道用什么关键字搜。
Mr-Jee 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 fihuang 的回复:]

引用 19 楼 cj205 的回复:

对象。就是对象~~
天啊 对象也要有一定规则的
大哥 这样的形式专业术语怎么说 我去百度搜一下 给个关键字
谢了
[/Quote]我不反对学院派,但是如果是学院派的话,前提是要有基础吧~~~!
所以我建议你先看看书。从哪开始呢,编程范式开始~~
fihuang 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 cj205 的回复:]

对象。就是对象~~
[/Quote]天啊 对象也要有一定规则的
大哥 这样的形式专业术语怎么说 我去百度搜一下 给个关键字
谢了
happy664618843 2010-10-25
  • 打赏
  • 举报
回复
var obj={
"yanzhen":function(){
alert('');
}
}
调用
obj.yanzhen();
Mr-Jee 2010-10-25
  • 打赏
  • 举报
回复
对象。就是对象~~
fihuang 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 cj205 的回复:]

不是生命了数组,而是就是对象
格式也不是json。
你姑且可以理解为字典
[/Quote]
js很灵活,但是本质上还是遵循基本的与法规的。
前辈,你也不要姑且了,你就直接说这样的命名形式本质上是什么?
zjhiphop2006 2010-10-25
  • 打赏
  • 举报
回复
悟透js中的对象封装,楼主想要深入学习的话可以看看下面的代码,不过要注意灵活运用!

//语法甘露:
var object = //定义小写的object 基本类,用于实现最基础的方法等
{
isA: function(aType) //一个判断类与类之间以及对象与类之间关系的基础方法
{
var self = this;
while(self)
{
if (self == aType)
return true;
self = self.Type;
};
return false;
}
};
19
function Class(aBaseClass, aClassDefine) //创建类的函数,用于声明类及继承关系
{
function class_() //创建类的临时函数壳
{
this.Type = aBaseClass; //我们给每一个类约定一个Type 属性,引用其继承的类
for(var member in aClassDefine)
this[member] = aClassDefine[member]; //复制类的全部定义到当前创建的类
};
class_.prototype = aBaseClass;
return new class_();
};
function New(aClass, aParams) //创建对象的函数,用于任意类的对象创建
{
function new_() //创建对象的临时函数壳
{
this.Type = aClass; //我们也给每一个对象约定一个Type 属性,据此可以访问到对象所属的类
if (aClass.Create)
aClass.Create.apply(this, aParams); //我们约定所有类的构造函数都叫Create,这和DELPHI 比较相

};
new_.prototype = aClass;
return new new_();
};
//语法甘露的应用效果:
var Person = Class(object, //派生至object 基本类
{
Create: function(name, age)
{
this.name = name;
this.age = age;
},
SayHello: function()
{
alert("Hello, I'm " + this.name + ", " + this.age + " years old.");
}
});
var Employee = Class(Person, //派生至Person 类,是不是和一般对象语言很相似?
{
Create: function(name, age, salary)
{
Person.Create.call(this, name, age); //调用基类的构造函数
this.salary = salary;
},
20
ShowMeTheMoney: function()
{
alert(this.name + " $" + this.salary);
}
});
var BillGates = New(Person, ["Bill Gates", 53]);
var SteveJobs = New(Employee, ["Steve Jobs", 53, 1234]);
BillGates.SayHello();
SteveJobs.SayHello();
SteveJobs.ShowMeTheMoney();
var LittleBill = New(BillGates.Type, ["Little Bill", 6]); //根据BillGate 的类型创建LittleBill
LittleBill.SayHello();
alert(BillGates.isA(Person)); //true
alert(BillGates.isA(Employee)); //false
alert(SteveJobs.isA(Person)); //true
alert(Person.isA(Employee)); //false
alert(Employee.isA(Person)); //true
pengwen420107 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cj205 的回复:]
JScript code
function Person() {
this.name = "jee";
this.age = 25;
this.getName = function() {
return this.name;
}
}

var person = new Person();
alert(person.age);
alert(p……
[/Quote]
up!
Mr-Jee 2010-10-25
  • 打赏
  • 举报
回复
不是生命了数组,而是就是对象
格式也不是json。
你姑且可以理解为字典
fihuang 2010-10-25
  • 打赏
  • 举报
回复
# theforever
# (碧海情天-好友满,要加看我资料):

你完全没有理解我的意思。第二种方法我会用,我只是不知道专业术语怎么解释。
我今天悟出了点道理,不知道对不对。请大家指点:这种写法其实是声明了一个数组,但是这个数组的成员是以json格式定义的,并且这个成员既可以是字段、也可以是函数。


加载更多回复(9)

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧