js 面向对象代码
贴上一段同事写的代码,值的纪念
<script type="text/javascript">
//创建箱子类
function Box(option) {
var self = this;
var _option = {
height: 12,
width: 12
};
//合并参数对象 : 记得引用Jquery.js
$.extend(_option, option);
this.height = _option.height;
this.width = _option.height;
//绑定事件列表
var _events = {};
//创建一个方法,并带有回调函数
this.push = function(option, callback) {
if (option.height > this.height) {
console.error("over height", this);
return;
}
if (option.width > this.width) {
console.error("over width", this);
return;
}
//判断是否有回调函数
if (callback instanceof Function)
//调用回调函数,并给它传值(参数:_option)
callback.call(this, _option);
}
//绑定事件
this.on = function(name, event) {
if (name == null || !name)
return null;
if (!(event instanceof Function))
if (self[name] instanceof Function) {
return self[name]();
}
if (event instanceof Function)
_events[name] = self[name] = function() {
event.apply(this);
return this;
}
}
//解除绑定事件
this.unbind = function(name) {
delete self[name];
delete _events[name];
//链式表达式
return this;
}
}
//创建box1对象
var box1 = new Box();
//创建box2对象
var box2 = new Box();
//调用方法
box1.push({
height: 12,
width: 12
//回调函数
}, function(option) {
console.log("push回调函数已调用..", option);
});
//动态给对象绑定事件
box1.on("click", function() {
this.width += 10;
console.log("width递增10,click事件被调用..", this.width);
});
box1.on("heihei", function() {
console.log("heihei事件被调用..", this.width);
});
//事件普通调用
box1.click();
//链式表达式调用方法
box1.on("click").click().heihei().on("heihei");
//打印box1的宽度
console.log(box1.width);
//打印box2的宽度
console.log(box2.width);
//解除绑定事件
box1.unbind("heihei");
//测试解除
box1.heihei();
</script>
js 面向对象代码的更多相关文章
- 前端学习:JS(面向对象)代码笔记
前端学习:JS(面向对象)代码笔记 前端学习:JS面向对象知识学习(图解) 创建类和对象 创建对象方式1调用Object函数 <body> </body> <script ...
- 前端学习:JS面向对象知识学习(图解)
前端学习:JS面向对象知识学习(图解) 前端学习:JS(面向对象)代码笔记 JS面向对象图解知识全览 创建类和对象 方式1:使用Object()函数 方式2:使用自变量 方式3:使用工厂函数 创建多个 ...
- 如何把js的代码写的更加容易维护(一)--面向对象编程
总是头疼javascript的代码写起来不可维护,那么看看下面的代码: (function (w, $) { var app = { init: function () { var me = this ...
- 带你一分钟理解闭包--js面向对象编程
上一篇<简单粗暴地理解js原型链--js面向对象编程>没想到能攒到这么多赞,实属意外.分享是个好事情,尤其是分享自己的学习感悟.所以网上关于原型链.闭包.作用域等文章多如牛毛,很多文章写得 ...
- 20个JS优化代码技巧
原文网址链接为:http://www.jstips.co/ .截取了一部分本人认为比较实用的技巧分享给大家.其中一小部分技巧为JS面向对象的写法,不宜一一列出.关于JS面向对象的写法可参考本人前几篇随 ...
- JS面向对象(2) -- this的使用,对象之间的赋值,for...in语句,delete使用,成员方法,json对象的使用,prototype的使用,原型继承与原型链
相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...
- 浅谈JS面向对象之创建对象
hello,everybody,今天要探讨的问题是JS面向对象,其实面向对象呢呢,一般是在大型项目上会采用,不过了解它对我们理解JS语言有很大的意义. 首先什么是面向对象编程(oop),就是用对象的思 ...
- js面向对象,有利于复用
需求:在网页上添加个天气预报. 以前总是在需要执行js的地方,直接写function(){}.在需要同样功能的地方直接copy,或者稍微修改. 然后在网上看看有没有好点的方法,然后就看到js面向对象编 ...
- 原生JS面向对象思想封装轮播图组件
原生JS面向对象思想封装轮播图组件 在前端页面开发过程中,页面中的轮播图特效很常见,因此我就想封装一个自己的原生JS的轮播图组件.有了这个需求就开始着手准备了,代码当然是以简洁为目标,轮播图的各个功能 ...
随机推荐
- hadoop2.2.0安装需要注意的事情
今天在安装hadoop2.2.0时遇到若干问题,解决这些问题有些心得,记录下来以备不时之需. 问题1.master和slave之间不能相互ssh免密码登陆. 问题表象此处略过,直接说解决办法: 1.查 ...
- ip地址设备信息
其实是个小问题,在项目中遇到要获取手机ip地址和mac地址的问题,mac地址获取用appcan的uexDevice插件可以实现. 但是ip地址,获取的方式很多,具体有搜狐/腾讯/新浪等提供的接口.但是 ...
- LeetCode:加一【66】
LeetCode:加一[66] 题目描述 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字. 你可以假设除了整数 0 之外 ...
- DevOps means no Ops!
DevOps means no Ops! 只单纯地搞网络的话或许你可以搞得非常好,并且获得不错的薪资,不过,5年后~10年后~,那时候随便一个人经过简单的学习就能通过Web界面或者专用的工具就能搞定一 ...
- Docker 搭建本地Registry
Docker已经将Registry开源,Registry本身也是一个容器. 1. 修改配置/etc/docker/daemon.json,去掉docker默认的https的访问 里面的内容是一个j ...
- 在webBrowser中取Cookie的方法
在很多情况下我们会使用间进程的webBrowser去实现一些网页的请求和抓去,这个时候有部分网页是取不到Cookie的,那怎么办呢?下面我提供一个方法,应该99%的都能取到, //取当前webBrow ...
- 在Treeview中节点的data属性中保存记录类型及其消除的办法
一.保存记录类型在data指针中: procedure TForm1.getheaditems(pp:TfrxBand;hnode:THeadTreeNode;var i:Integer;var j: ...
- org.eclipse.core.resources.bak文件导致MyEclipse每次关闭时无法保存文件
MyEclipse关闭时提示如下信息 Problems occurred while trying to save the state of the workbench. Internal Error ...
- Hive- 大数据仓库Hive
什么是 Hive? Hive 是由 FaceBook 开源用于解决少量数据结构化日志的数据统计.Hive是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类SQL查询 ...
- cpu架构
转自 http://blog.csdn.net/wyzxg/article/details/5027738 CPU架构 Architecture ,结构.架构,这个词用于 CPU 的时候是指 CPU ...