hey you guys,两个月没有写技术博客了。作为一名有理想、有抱负的程序员,两个月不写技术博客,真该打。业精于勤,荒于嬉。行成于思,毁于随。勤奋是必不可少的,今后养成一周至少一篇博客的习惯。好了,不瞎扯了,书归正传。  今天在做项目时,遇到了需要创建JavaScript对象的情况。所以Bing了一篇老外写的关于3种创建JavaScript对象的文章,看后跟着打了一遍代码。感觉方法挺好的,在这里与大家分享一下。

一、利用函数创建对象:

//定义对象
function Animal(type)
{
this.name="";
this.type=type;
this.introduction=function(){
return "我的名字是: "+this.name+",我属于 "+this.type;
}
} var animal=new Animal("家禽"); //实例化我们上面创建的对象
animal.name="小红";
alert(animal.introduction()); //调用它的introduction函数(此时,页面会弹出:我的名字是 小红,我属于 家禽);

这种方法,大家一定都很熟悉了。但是,使用这种方法会造成性能的损耗。在这里,我们是通过new关键子来实例化对象的。其实,new关键子是做了两件事。一,定义了一个匿名方法(Animal)。二、调用它。这样就不如我们接下来要介绍的方法高效了。

二、利用对象字面量(object literals):

不知道翻译的对不对,待会我会把原文地址告诉大家,有兴趣的可以看原文。

//定义对象
var Book=
{
name:"红楼梦",
type:"文学作品",
getAuthor:function()
{
return :"我是曹雪芹的孩子!";
}
} alert(Book.GetAuthor()); //调用对象方法,此时页面会出现:我是曹雪芹的孩子。
Book.name="灌篮"; //修改对象属性
alert(Book.name); //此时,页面会弹出:灌篮

相信大家看到代码,应该明白了为什么说这个方法会高效一些了。因为,它相当于定义了一个JavaScript全局变量。我们可以直接用它,不需要实例化它。但是,这样看起来怪怪的啊。那么,解决方案来了。我们来看看第三种方法吧。

三、单例模式(Singleton using a function):

翻译成单例模式,可能不是太妥。先看代码吧:

//定义对象
var Gender=new function()
{
this.type="女生";
this.speaking=function()
{
return "我是"+this.type;
}
} alert(Gender.speaking();) //使用对象 此时页面会出现:我是女生。

大家看这段儿代码,是不是与我们的方法一很像呢?但是,它可像方法一那样工作的。方法一,用一次对象,就要创建一次对象。这个方法,创建一次对象,就可以永久使用。所以,这种方式,很类似于设计模式中的单例模式。

原文地址:http://www.phpied.com/3-ways-to-define-a-javascript-class/

3种创建、调用JavaScript对象的方法的更多相关文章

  1. Javascript对象的方法赋值

    Javascript对象编程学习中,一直不能很好的掌握对象的属性(property)和方法(method).今天在写代码过程中,又犯了一个低级错误. <!DOCTYPE html> < ...

  2. 三种dedecms调用相关文章的方法

    在文章的末尾或侧边栏添加相关文章可以提高用户的黏度,提高pv,增加se的好印象(哈哈),那么dedecms如何调用相关文章呢?有三种方法可以实现. 第一种dedecms调用相关文章的方法,用默认的li ...

  3. 错误笔记 对象为null时调用改对象的方法会报错

    对象为null时调用改对象的方法会报错

  4. java反射调用某个对象的方法

    // 反射调用某个对象的方法 public Object invokeMethod(Object methodObject, String methodName, Object[] args) thr ...

  5. 不同浏览器创建 ajax XMLHTTPRequest对象的方法及兼容性问题总结

    XMLHttpRequest 对象是AJAX功能的核心,要开发AJAX程序必须从了解XMLHttpRequest 对象开始. 了解XMLHttpRequest 对象就先从创建XMLHttpReques ...

  6. javascript对象与方法

    对象与方法 一.数组(Array) 1.使用new关键字创建数组 var box = new Array();                                     //创建了一个数 ...

  7. 创建javaScript对象的方法

    一.工厂模式 function person (name,age) { var p=new Object(); p.name=name; p.age=age; p.showMessage=functi ...

  8. 一种SpringMVC调用Javascript的方法

    在spring的controller里面,一般是进行业务逻辑的处理,组织数据模型,然后选择适当的显示模版进行展示,这种情况下,我们可以事先做一个js的模版,然后controller根据不同的参数调用此 ...

  9. Selenium实战(二)——调用JavaScript之execute_script()方法

    1.浏览器滚动条的拖动,不能依靠WebDriver提供的API来实现,用于调整浏览器滚动条位置的JavaScript代码如下: window.scrollTo(0,450); window.scrol ...

随机推荐

  1. 关于Sublime text 2中Emmet的安装 _html:xt无效

    其实这个网上很多教程,有一些方法是可行的,但是有一些方法是行不通的. 虽然Sublime text 2有不同平台的版本,但是安装起来,还是有点差异的. 先简单介绍一下Emmet,Emmet是Zen-c ...

  2. C程序设计语言练习题1-18

    练习1-18 编写一个程序,删除每个输入行末尾的空格及制表符,并删除完全是空格的行. 代码如下: #include <stdio.h> // 包含标准库的信息. #define MAXLI ...

  3. app 测试点

    以下所有测试最后必须在真机上完整的执行1.安装.卸载测试 在真机上的以及通过91等第三方的安装与卸载 安装在手机上还是sd卡上 2.启动app测试3.升级测试 数字签名.升级覆盖安装.下载后手动覆盖安 ...

  4. SSD、高级格式化硬盘,4K,分区,对齐,Ghost能不能用的解释用SSD的都可以看看

    或者以上,建议选择2048,这是Win7分区使用的值,实际对齐大小就为1024K.  4.如何知道是否对齐?  使用工具AS SSD Benchmark(HDTune Pro 4.6目前测的禁绝)   ...

  5. 如何让多个Activity共用一个Menu

    我们可以定义一个自己的CommActivity继承自Activity,然后让每个自定义Activity继承CommActivity,就可以做到. 例如: public class CommActivi ...

  6. win7 snmp

    http://blog.chinaunix.net/uid-21857285-id-3340206.html

  7. 体验Lua

    想用之和NGINX结合,终结公司混乱的NGINX配置 玩起来先,感觉很精简,很实用哟. print("hello world") a={,} b=a print(a==b,a~=b ...

  8. Sublime Text2不自动打开最近的项目

    1.首选项 2.设置默认 "hot_exit": false, "remember_open_files": false, 这两个值改成false就可以了

  9. 【转】secureCRT使用退格键(backspace)出现^H解决办法

    原文网址:http://skykiss.blog.51cto.com/blog/2892603/769771 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将 ...

  10. curl_easy_setopt-curl库的关键函数之一

    函数原型:#include <curl/curl.h>CURLcodecurl_easy_setopt(CURL *handle, CURLoption option, parameter ...