利用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 相关文章推荐
使用JS操作页面表格,元素的一些技巧
Feb 02 Javascript
Javascript中暂停功能的实现代码
Mar 04 Javascript
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
Jan 09 Javascript
javascript操作referer详细解析
Mar 10 Javascript
jQuery中的$.ajax()方法应用
May 06 Javascript
返回顶部按钮响应滚动且动态显示与隐藏
Oct 14 Javascript
node.js中的querystring.stringify方法使用说明
Dec 10 Javascript
JavaScript 匿名函数和闭包介绍
Apr 13 Javascript
Jquery实现仿京东商城省市联动菜单
Nov 19 Javascript
canvas绘制七巧板
Feb 03 Javascript
JavaScript中错误正确处理方式小结你用对了吗
Oct 10 Javascript
Element InputNumber计数器的使用方法
Jul 27 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加密解密的代码
2006/10/09 PHP
PHP jQuery表单,带验证具体实现方法
2014/02/15 PHP
ThinkPHP实现ajax仿官网搜索功能实例
2014/12/02 PHP
用JavaScript隐藏控件的方法
2009/09/21 Javascript
关于document.cookie的使用javascript
2010/10/29 Javascript
返回对象在当前级别中是第几个元素的实现代码
2011/01/20 Javascript
推荐17个优美新鲜的jQuery的工具提示插件
2012/09/14 Javascript
js 火狐下取本地路径实现思路
2013/04/02 Javascript
jQuery aminate方法定位到页面具体位置
2013/12/26 Javascript
Js获取下拉框选定项的值和文本的实现代码
2014/02/26 Javascript
javascript 中that的含义示例介绍
2014/05/14 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
JS实现往下不断流动网页背景的方法
2015/02/27 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
2016/04/17 Javascript
深入分析node.js的异步API和其局限性
2016/09/05 Javascript
JS动态生成年份和月份实例代码
2017/02/04 Javascript
Vue页面跳转动画效果的实现方法
2018/09/23 Javascript
基于Angular中ng-controller父子级嵌套的相关属性详解
2018/10/08 Javascript
微信小程序自定义tabBar组件开发详解
2020/09/24 Javascript
vue 微信扫码登录(自定义样式)
2020/01/06 Javascript
ES6中Promise的使用方法实例总结
2020/02/18 Javascript
关于javascript中的promise的用法和注意事项(推荐)
2021/01/15 Javascript
[17:45]DOTA2 HEROES教学视频教你分分钟做大人-军团指挥官
2014/06/11 DOTA
[01:06:19]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第二场 1月8日
2021/03/11 DOTA
Python进程间通信用法实例
2015/06/04 Python
python3实现TCP协议的简单服务器和客户端案例(分享)
2017/06/14 Python
pandas实现to_sql将DataFrame保存到数据库中
2019/07/03 Python
深入了解Python枚举类型的相关知识
2019/07/09 Python
python GUI图形化编程wxpython的使用
2019/07/19 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
2019/07/22 Python
Pycharm安装Qt Design快捷工具的详细教程
2020/11/18 Python
matplotlib交互式数据光标mpldatacursor的实现
2021/02/03 Python
html5-websocket基于远程方法调用的数据交互实现
2012/12/04 HTML / CSS
马来西亚航空官方网站:Malaysia Airlines
2017/07/28 全球购物
2015年度女工工作总结
2015/10/22 职场文书
JavaScript实例 ODO List分析
2022/01/22 Javascript