返回介绍

3.1 JavaScript 中的对象

发布于 2024-07-13 13:11:21 字数 2110 浏览 0 评论 0 收藏 0

JavaScript 并不是一种典型的面向对象编程语言。如果你使用过其他面向对象语言的话,请记住,在 JavaScript 中,面向对象稍微有些特殊。不过,如果你是个面向对象的新手的话,这应该不会困扰你吧。我并不会深入讲解,要是你觉得有必要的话,可以看看 JavaScript 面向对象的教程与文档。

面向对象编程是一种重新组织代码的方式,它把逻辑上相关的东西合为一体,你可以设定向用户公开的或者关闭的代码部分(封装性)。类(class)是这样的东西:它描述了实体特性(属性 attributes),实体怎样对外开放(方法 methods)。类的一个唯一实体被称为对象(object)。对象是类的实例化。当你实例化一个类的时候,你其实调用了一个称为构造器(constuctor)的方法。为了创建类的实例,你得用到关键字 new,就像你在步骤 1 中创建动画一样。

var myObject = new myClass(some, important, arguments);

在 JavaScript 中,对象其实是函数(function)的实例,对的,你没有看错,就是函数!所以当你定义类的时候,看起来就像是在写一个函数。事实上,当你在 JavaScript 中创建类的时候,你写的是它的构造器。一个简单的类看起来应该是这个样子:

var myClass() = function(var some, var important, var arguments){
  this.someVisilbeAttribute = some + arguments;
  someLessVisiblAttribute = important + arguments;
  this.tickleMe = function(var name){
  alert("hello "+name+" you should now that "+this.someVisibleAttribute);
  };
  return true;
}

这段代码定义了一个叫 myClass 的类,它有两个属性,分别是 someVisibleAttribute、someLessVisibleAttribute;一个方法,叫做 tickleMe。与此同时,我们也定义了构造器的工作方式,用构造器参数定义对象的属性。

就像你在例子中所看到的那样,存在着很多定义类属性的方式。当使用 var 关键字的时候,你在对象中创建了一个本地变量,这意味着对象中任何执行性的代码都可以通过属性名引用到具体属性。通过使用 this 关键字,对象属性也能被外界所以引用到。但这并不意味通过 var 关键字定义的属性不能被外界所引用,而是这稍嫌麻烦,而且拐弯抹角。下面的代码展示了如何从外界引用对象的可见属性:

myObject.someVisibleProperty = "a new value";
alert(myObject.someVisibleProperty)

而且你需要知道在构造器中的参数变量可以被对象中的可执行性代码所引用,就好像它们已经通过 var 声明过一样。

你可以在对象实例化之后改变它,增加新属性或者方法。当这么做的时候,你需要考虑是要改变类的所有对象还是仅仅这一个对象。下面的例子展现的是后者。

myObject.lastMinuteMethode = function(){/*Do something here*/};
myObject.aNewProperty = "aValue";

有时你并不只是想改变这一个对象,还想改变它的兄弟姐妹对象 sibing 。为了实现这样的效果,可以使用对象的原型(prototype)。原型就像在对象中对类进行定义,可以通过.prototype 属性。任何相同类的实例们都共享同一个原型。所以当你在一个对象的原型中做了什么,其他实例也受影响。

var firstObject = new myClass(1,2,3);
var secondObject = new myClass(4,5,6);
firstObject.prototype.aNewMethode = function(){alert("I'm new");}
secondObject.aNewMethode();

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文