利用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 相关文章推荐
javascript new 需不需要继续使用
Jul 02 Javascript
javascript闭包的理解和实例
Aug 12 Javascript
可简单避免的三个JS发布错误的详细介绍
Aug 02 Javascript
多次注册事件会导致一个事件被触发多次的解决方法
Aug 12 Javascript
JavaScript图片轮播代码分享
Jul 31 Javascript
AngularJS控制器继承自另一控制器
May 09 Javascript
Angular 1.x个人使用的经验小结
Jul 19 Javascript
gulp安装以及打包合并的方法教程
Nov 19 Javascript
微信小程序实现发红包功能
Jul 11 Javascript
jquery使用FormData实现异步上传文件
Oct 25 jQuery
JS数组方法shift()、unshift()用法实例分析
Jan 18 Javascript
google广告之另类js调用实现代码
Aug 22 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
第八节--访问方式
2006/11/16 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
PHP微信红包API接口
2015/12/05 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
2017/06/12 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/01/13 Javascript
js操作select控件的几种方法
2010/06/02 Javascript
关于javascript中this关键字(翻译+自我理解)
2010/10/20 Javascript
js 编程笔记 无名函数
2011/06/28 Javascript
jquery 操作DOM的基本用法分享
2012/04/05 Javascript
使用ImageMagick进行图片缩放、合成与裁剪(js+python)
2013/09/16 Javascript
jquery实现网页查找功能示例分享
2014/02/12 Javascript
jQuery中的val()示例应用
2014/02/26 Javascript
仿JQuery输写高效JSLite代码的一些技巧
2015/01/13 Javascript
window.location.hash知识汇总
2015/11/09 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
Angular 2父子组件数据传递之@Input和@Output详解 (上)
2017/07/05 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
vue+element实现表格新增、编辑、删除功能
2019/05/28 Javascript
详解vuex之store源码简单解析
2019/06/13 Javascript
JavaScript展开操作符(Spread operator)详解
2019/07/20 Javascript
python 从远程服务器下载日志文件的程序
2013/02/10 Python
Python 快速实现CLI 应用程序的脚手架
2017/12/05 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
2018/04/25 Python
Django实现微信小程序的登录验证功能并维护登录态
2019/07/04 Python
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
python实现遍历文件夹图片并重命名
2020/03/23 Python
如何表示python中的相对路径
2020/07/08 Python
魅力惠奢品线上平台:MEI.COM
2016/11/29 全球购物
eBay美国官网:eBay.com
2020/10/24 全球购物
金融专业应届生求职信
2013/11/02 职场文书
三月学雷锋活动总结
2014/06/26 职场文书
医德考评自我评价
2014/09/14 职场文书
公司党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
幼儿园教师考核评语
2014/12/31 职场文书
大一新生军训新闻稿
2015/07/17 职场文书
演讲比赛通讯稿
2015/07/18 职场文书