利用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 相关文章推荐
ExtJS 2.0实用简明教程 之获得ExtJS
Apr 29 Javascript
node.js中的fs.ftruncate方法使用说明
Dec 15 Javascript
jQuery操作DOM之获取表单控件的值
Jan 23 Javascript
angularJS 中$attrs方法使用指南
Feb 09 Javascript
基于insertBefore制作简单的循环插空效果
Sep 21 Javascript
jquery实现触发时更新下拉列表内容的方法
Dec 02 Javascript
JS判断浏览器是否安装flash插件的简单方法
Sep 13 Javascript
etmvc+jQuery EasyUI+combobox多值操作实现角色授权实例
Nov 09 Javascript
微信小程序 如何引入外部字体库iconfont的图标
Jan 31 Javascript
小程序如何构建骨架屏
May 29 Javascript
npm 语义版本控制详解
Sep 10 Javascript
JavaScript Dom实现轮播图原理和实例
Feb 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 在文件指定行插入数据的代码
2010/05/08 PHP
php取整函数ceil,floo,round的用法及介绍
2013/08/31 PHP
PHP获取当前日期和时间及格式化方法参数
2015/05/11 PHP
JavaScript建立一个语法高亮输入框实现思路
2013/02/26 Javascript
js实现表单多按钮提交action的处理方法
2015/10/24 Javascript
JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决方法
2016/08/19 Javascript
微信小程序 本地数据存储实例详解
2017/04/13 Javascript
JS使用ActiveXObject实现用户提交表单时屏蔽敏感词功能
2017/06/20 Javascript
浅析vue给不同环境配置不同打包命令
2018/08/17 Javascript
JS滚轮控制图片缩放大小和拖动的实例代码
2018/11/20 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
2018/12/18 Javascript
vue 中Virtual Dom被创建的方法
2019/04/15 Javascript
微信小程序导入Vant报错VM292:1 thirdScriptError的解决方法
2019/08/01 Javascript
详解JavaScript中精度失准问题及解决方法
2020/02/04 Javascript
[54:24]Optic vs TNC 2018国际邀请赛小组赛BO2 第二场
2018/08/18 DOTA
[01:05:52]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第一场 2月2日
2021/03/11 DOTA
Python基于Floyd算法求解最短路径距离问题实例详解
2018/05/16 Python
python opencv实现图片旋转矩形分割
2018/07/26 Python
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
Python中url标签使用知识点总结
2020/01/16 Python
Python如何实现在字符串里嵌入双引号或者单引号
2020/03/02 Python
美国折扣地毯销售网站:Rugs.com
2020/03/27 全球购物
澳大利亚最受欢迎的女士度假服装:Kabana Shop
2020/10/10 全球购物
促销活动策划方案
2014/01/12 职场文书
采购人员的个人自我评价
2014/01/16 职场文书
腾讯广告词
2014/03/19 职场文书
支部组织生活会方案
2014/06/10 职场文书
行政工作试用期自我评价
2014/09/14 职场文书
小学英语复习计划
2015/01/19 职场文书
2015年“公民道德宣传日”活动方案
2015/05/06 职场文书
企业宣传语大全
2015/07/13 职场文书
2016中考冲刺决心书
2015/09/22 职场文书
幼儿教师三分钟演讲稿
2019/06/21 职场文书
IDEA使用SpringAssistant插件创建SpringCloud项目
2021/06/23 Java/Android
Java数据开发辅助工具Docker与普通程序使用方法
2021/09/15 Java/Android
vue 把二维或多维数组转一维数组
2022/04/24 Vue.js