利用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 相关文章推荐
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
Sep 08 Javascript
善用事件代理,警惕闭包的性能陷阱。
Jan 20 Javascript
关于js类的定义
Jun 28 Javascript
JavaScript高级程序设计 阅读笔记(十三) js定义类或对象
Aug 14 Javascript
关于javascript中的typeof和instanceof介绍
Dec 04 Javascript
jQuery读取和设定KindEditor值的方法
Nov 22 Javascript
js 鼠标移动显示图片的简单实例
Dec 25 Javascript
javascript实现图片跟随鼠标移动效果的方法
May 13 Javascript
Bootstrap中glyphicons-halflings-regular.woff字体报404错notfound的解决方法
Jan 19 Javascript
node.js + socket.io 实现点对点随机匹配聊天
Jun 30 Javascript
Vue实现todolist删除功能
Jun 26 Javascript
JavaScript实现图片合成下载的示例
Nov 19 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
PHP SplObjectStorage使用实例
2015/05/12 PHP
Ubuntu上安装yaf扩展的方法
2018/01/29 PHP
通过JAVAScript实现页面自适应
2007/01/19 Javascript
Js 随机数产生6位数字
2010/05/13 Javascript
Jquery拖拽并简单保存的实现代码
2010/11/28 Javascript
Javascript学习笔记之数组的遍历和 length 属性
2014/11/23 Javascript
jquery判断至少有一个checkbox被选中的方法
2015/06/05 Javascript
AngularJS入门教程之MVC架构实例分析
2016/11/01 Javascript
bootstrap导航、选项卡实现代码
2016/12/28 Javascript
JavaScript实现经纬度转换成地址功能
2017/03/28 Javascript
label+input实现按钮开关切换效果的实例
2017/08/16 Javascript
解决Vue打包之后文件路径出错的问题
2018/03/06 Javascript
Vue封装一个简单轻量的上传文件组件的示例
2018/03/21 Javascript
对layui中的onevent 和event的使用详解
2019/09/06 Javascript
微信小程序实现签字功能
2019/12/23 Javascript
react中hook介绍以及使用教程
2020/12/11 Javascript
[10:28]2018DOTA2国际邀请赛寻真——VGJ.S寻梦之路
2018/08/15 DOTA
python sys模块sys.path使用方法示例
2013/12/04 Python
优化Python代码使其加快作用域内的查找
2015/03/30 Python
python opencv实现旋转矩形框裁减功能
2018/07/25 Python
python实现汽车管理系统
2018/11/30 Python
python 处理数字,把大于上限的数字置零实现方法
2019/01/28 Python
浅谈python多进程共享变量Value的使用tips
2019/07/16 Python
python中open函数的基本用法示例
2019/09/07 Python
基于python traceback实现异常的获取与处理
2019/12/13 Python
CSS3 please 跨浏览器的CSS3产生器
2010/03/14 HTML / CSS
联想哥伦比亚网上商城:Lenovo Colombia
2017/01/10 全球购物
VICHY薇姿俄罗斯官方网上商店:法国护肤品牌,火山温泉水
2019/11/22 全球购物
年度考核自我鉴定
2013/11/09 职场文书
历史专业个人求职信分享
2013/12/20 职场文书
大学毕业生通用自我评价
2014/01/05 职场文书
扬尘污染防治方案
2014/06/15 职场文书
装饰施工员岗位职责
2015/04/11 职场文书
活动主持人开场白
2015/05/28 职场文书
课改心得体会范文
2016/01/25 职场文书
Spring Boot 实现 WebSocket
2022/04/30 Java/Android