给一个对象添加属性和方法的三种方案简单比较
来源:互联网 发布:js汉字转unicode编码 编辑:程序博客网 时间:2024/06/05 17:40
下午刚好没什么事情,作为有追求的程序员当然要搞点事情了,于是便把给对象添加属性和方法的几种常用方法总结了一下,常用的有三种:
- 直接在空对象上面添加
- 构造函数原型上添加
- 立即执行函数中定义空对象添加属性和方法后返回
<!doctype html><html lang="en"><head> <meta charset="UTF-8" /> <title>给一个对象添加属性和方法的三种方案简单比较</title></head><body> <button>button</button> <script type="text/javascript"> // 第一种直接通过字面创建一个空对象,然后在空对象上面添加属性和方法 // 之后通过对象名来调用定义的属性和方法 var module1 = {}; module1.property1 = 'property1'; module1.method1 = function () { return 'method1'; } console.log(module1.property1); // property1 console.log(module1.method1()); // method1 // 第二种定义一个构造函数,然后在构造函数的原型中添加属性和方法, // 之后通过构造函数的实例来调用原型中定义的属性和方法。 var Module2 = function () {} Module2.prototype = { property2: 'property2', methods2: function () { return 'methods2'; } } var module2 = new Module2(); console.log(module2.property2); // property2 console.log(module2.methods2()); // methods2 // 第三种讲一个立即执行函数赋值给一个变量,之后再立即执行函数中定义一个空对象,在空对象上面 // 添加一些属性和方法,最后返回这个空对象 var module3 = (function () { var obj = {}; var methods3 = 'methods3'; obj.property3 = 'property3'; obj.methods3 = function () { return methods3; } return obj; })(); console.log(module3.property3); // property3 console.log(module3.methods3()); // methods3 // 方案一最简单,但是不利于扩展和添加新功能,方案二适用于需要大量实例,实例需要继承和扩展父类方案的情况,方案三 的 // 优势在于,我们可以在立即执行函数中可以定义一些属性和方法,这些属性和方法被封装到了立即执行函数中,在外部是无法访问的 // 减少了全局变量,更加有利于我们进行模块化编程 // 注1:this 的指向:在一般函数中this指向全局对象,在构造函数中this指向构造函数的实例,在对象中this指向对象本身 // 在构造对象的原型对象中this指向实例,在对象的方法调用中,this指向调用它的对象,也就是不论何种情况,this总是 // 指向一个对象,要么是全局对象,要么是实例对象,要么是调用对象 // 注2: 在构造函数内部定义的是私有属性和方法,实例无法调用,通过this定义的属性是公共属性,通过this定义的方法是特权方法,在构造函数 // 实例可以调用,标识符上面定义的属性和方法是静态属性和方法,实例不能调用,在构造函数的原型对象中定义的属性和方法是共有属性和方法, // 实例可以调用 </script></body></html>
在线浏览
阅读全文
0 0
- 给一个对象添加属性和方法的三种方案简单比较
- 动态给类和对象添加属性和方法
- javascript面向对象(给对象添加属性和方法的方式)
- 给js对象添加新属性的方法
- 如何给vb的UserControl添加属性、方法和事件?
- 给firefox添加ie方法和属性
- prototype 属性使您有能力向对象添加属性和方法 三
- Groovy探索之MOP 八 运行期内给类和对象添加属性或方法
- javascript动态添加、修改、删除对象的属性和方法
- javascript动态添加、修改、删除对象的属性和方法
- javascript动态添加、修改、删除对象的属性和方法
- javascript动态添加、修改、删除对象的属性和方法
- javascript动态添加、修改、删除对象的属性和方法
- Runtime的实践——给一个类添加属性(关联对象)
- Javascript prototype属性使用(给内置对象添加新的方法,方便调用)
- 获得一个类实例的Class对象的三种方法,与Class对象的相互比较
- 获得一个类实例的Class对象的三种方法,与Class对象的相互比较
- 给li 标签添加图标的三种方法
- django 快速搭建blog
- 最大流问题的Ford-Fulkerson解法
- 用list_to_tree在ThinkPHP上制作一个简单的菜单功能
- 穿过已知点画平滑曲线(3次贝塞尔曲线)
- springmvc上传图片并显示图片--支持多图片上传- 转
- 给一个对象添加属性和方法的三种方案简单比较
- 堆排序(大顶堆)
- 对前端模块化的一些理解
- Spark SQL
- pid=4占用80端口
- HttpURLConnection用法详解
- 关于ReadFile函数错误:代码6,ERROR_INVALID_HANDLE
- USACO
- codeforces 61E 树状数组 逆向