利用javascript的面向对象的特性实现限制试用期


Posted in Javascript onAugust 04, 2011

下边是我自己写的一个类,类中有字段、方法

//构造函数 
function Person(name,sex,age) { 
this.name = name; 
this.sex = sex; 
this.age = age; 
}; 
Person.prototype.getName = function () { 
return this.name; 
}; 
Person.prototype.getSex=function(){ 
return this.sex; 
}; 
Person.prototype.getAge=function(){ 
return this.age; 
}; 
Person.prototype.setName = function (name) { 
this.name = name; 
}; 
Person.prototype.setAge = function (age) { 
this.age = age; 
}; 
Person.prototype.setSex = function (sex) { 
this.sex = sex; 
}; 
Person.prototype.getDescription = function () { 
return "我是 " + this.getName() + ",性别 " + this.getSex()+ ",年龄 " + this.getAge(); 
};

下边我们实例化这个类并调用其方法
var person = new Person("无风听海", "男", 20); 
alert(person.getDescription());

利用javascript的面向对象的特性实现限制试用期

      我们都知道javascript是一种弱类型的动态语言,在javascript是没有函数重载的概念的,但是我们完全可以在同一文件(命名空间)中定义不同参数的构造器。如下我定义了数个构造函数

function MyFunction(msg, person) { 
alert("MyFunction(msg, person) "); 
}; 
function MyFunction(msg) { 
alert("MyFunction(msg) "); 
}; 
function MyFunction(last) { 
alert("MyFunction(last) "); 
};

那么我们实例化的时候会执行那个构造函数呢?
var mf = new MyFunction();

利用javascript的面向对象的特性实现限制试用期
那我们在实例化的代码后边新定义一个构造器会怎么样呢?
function MyFunction(msg, person) { 
alert("MyFunction(msg, person) "); 
}; function MyFunction(msg) { 
alert("MyFunction(msg) "); 
}; 

function MyFunction(last) { 
alert("MyFunction(last) "); 
}; 
var mf = new MyFunction(); 
function MyFunction(lastlast) { 
alert("MyFunction(lastlast) "); 
};

利用javascript的面向对象的特性实现限制试用期
      从以上结果我们可以判定,在给定的范围内,当我们实例化对象时,javascript的解释器会自下向上查找类的定义,当找到第一个类的定义(参数可以不同)就会进行执行并停止继续查找;
      到现在要实现限制试用期好像有点眉目了,我们根据时间的不同,只要我们可以控制其不能执行正确的构造函数就可以实现
//构造函数 
function Person(name,sex,age) { 
this.name = name; 
this.sex = sex; 
this.age = age; 
}; 
Person.prototype.getName = function () { 
return this.name; 
}; 
Person.prototype.getSex=function(){ 
return this.sex; 
}; 
Person.prototype.getAge=function(){ 
return this.age; 
}; 
Person.prototype.setName = function (name) { 
this.name = name; 
}; 
Person.prototype.setAge = function (age) { 
this.age = age; 
}; 
Person.prototype.setSex = function (sex) { 
this.sex = sex; 
}; 
Person.prototype.getDescription = function () { 
return "我是 " + this.getName() + ",性别 " + this.getSex()+ ",年龄 " + this.getAge(); 
}; 
var person = new Person("无风听海", "男", 20); 
alert(person.getDescription()); 
if ((new Date().getTime() / 1000) - 1279890171 > 31556859) { 
function Person() { }; 
};

利用javascript的面向对象的特性实现限制试用期

      这里我们也正常弹出了对话框,那么我们可以稍微更改一下函数getDescription,来模拟复杂的业务数据处理

Person.prototype.getDescription = function () { 
return "我是 " + this.getName().toString() + ",性别 " + this.getSex().toString() + ",年龄 " + this.getAge().toString(); 
};

利用javascript的面向对象的特性实现限制试用期
也许你回觉得这个太没有技术含量了,那么我们在比较大的项目中我们可以进行代码混淆、进行代码转义,同时函数定义和实例化根本不在同一个文件中!
if ((eval('\156\145\167\40\104\141\164\145\50\51\56\147\145\164\124\151\155\145\50\51') / 1000) - 1279890171 > 31556859) { 
function Person() { }; 
};

唯一令我困惑的地方就是上面这段代码的其计时的起始时间(1279890171)怎么设置到代码里的?难道是在我们下载类库的时候自动添加的?
Javascript 相关文章推荐
jquery ajax提交表单数据的两种方式
Nov 24 Javascript
apycom出品的jQuery精美菜单破解方法
Feb 18 Javascript
Json字符串转换为JS对象的高效方法实例
May 01 Javascript
JavaScript显示当然日期和时间即年月日星期和时间
Oct 29 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
Nov 19 Javascript
jQuery中get和post方法传值测试及注意事项
Aug 08 Javascript
详解JavaScript中循环控制语句的用法
Jun 03 Javascript
动态更新highcharts数据的实现方法
May 28 Javascript
jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
May 08 jQuery
详解React 16 中的异常处理
Jul 28 Javascript
JavaScript中附件预览功能实现详解(推荐)
Aug 15 Javascript
js+html5实现手机九宫格密码解锁功能
Jul 30 Javascript
jquery动态加载图片数据练习代码
Aug 04 #Javascript
jquery里的正则表达式说明
Aug 03 #Javascript
基于jQuery的图片剪切插件
Aug 03 #Javascript
jQuery + Flex 通过拖拽方式动态改变图片的代码
Aug 03 #Javascript
JavaScript 一道字符串分解的题目
Aug 03 #Javascript
JavaScript中去掉数组中的重复值的实现方法
Aug 03 #Javascript
JavaScript 大数据相加的问题
Aug 03 #Javascript
You might like
简单的过滤字符串中的HTML标记
2006/12/25 PHP
PHP判断远程url是否有效的几种方法小结
2011/10/08 PHP
js给onclick赋值传参数的两种方法
2013/11/25 Javascript
JQuery自适应窗口大小导航菜单附源码下载
2015/09/01 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
Vue 按键修饰符处理事件的方法
2018/05/04 Javascript
解决bootstrap模态框数据缓存的问题方法
2018/08/10 Javascript
javascript闭包的使用之按钮切换功能
2018/08/30 Javascript
vue src动态加载请求获取图片的方法
2018/10/17 Javascript
AngularJS实现的自定义过滤器简单示例
2019/02/02 Javascript
使用vue重构资讯页面的实例代码解析
2019/11/26 Javascript
基于javascript的无缝滚动动画实现2
2020/08/07 Javascript
Ant Design moment对象和字符串之间的相互转化教程
2020/10/27 Javascript
[02:36]DOTA2上海特锦赛 回忆电竞生涯的重要瞬间
2016/03/25 DOTA
python实现将内容分行输出
2015/11/05 Python
详谈python3中用for循环删除列表中元素的坑
2018/04/19 Python
Python rstrip()方法实例详解
2018/11/11 Python
python 读写excel文件操作示例【附源码下载】
2019/06/19 Python
jupyter notebook中新建cell的方法与快捷键操作
2020/04/22 Python
Django生成数据库及添加用户报错解决方案
2020/10/09 Python
CSS实现圆形放大镜狙击镜效果 只有圆圈里的放大
2012/12/10 HTML / CSS
CSS3中的display:grid,网格布局介绍
2019/10/30 HTML / CSS
美国沃尔玛网上超市:Walmart
2020/08/14 全球购物
英国在线定做百叶窗网站:Make My Blinds
2020/08/17 全球购物
介绍一下Python下range()函数的用法
2013/11/07 面试题
汽车技术服务与营销专业推荐信
2013/11/29 职场文书
2014年大学生自我评价
2014/01/19 职场文书
担保书格式及范文
2014/04/01 职场文书
要账委托书范本
2014/09/15 职场文书
大学生党员批评与自我批评范文
2014/10/14 职场文书
教师党员学习十八届四中全会思想汇报
2014/11/03 职场文书
2016高考感言
2015/08/01 职场文书
三严三实·严以用权心得体会
2016/01/12 职场文书
Nginx工作原理和优化总结。
2021/04/02 Servers
关于python pygame游戏进行声音添加的技巧
2021/10/24 Python
nginx 添加http_stub_status_module模块
2022/05/25 Servers