利用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 相关文章推荐
图片之间的切换
Jun 26 Javascript
Javascript实现的鼠标经过时播放声音
May 18 Javascript
jQuery1.5.1 animate方法源码阅读
Apr 05 Javascript
基于jquery实现状态限定编辑的代码
Feb 11 Javascript
解决JQeury显示内容没有边距内容紧挨着浏览器边线
Dec 20 Javascript
javascript:FF/Chrome与IE动态加载元素的区别说明
Jan 26 Javascript
jQuery实现伸展与合拢panel的方法
Apr 30 Javascript
javacript获取当前屏幕大小
Jun 04 Javascript
jQuery中 $ 符号的冲突问题及解决方案
Nov 04 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
May 15 Javascript
使用Vue-Router 2实现路由功能实例详解
Nov 14 Javascript
vue2路由基本用法实例分析
Mar 06 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来改写404错误页让你的页面更友好
2013/01/24 PHP
php 地区分类排序算法
2013/07/01 PHP
浅析虚拟主机服务器php fsockopen函数被禁用的解决办法
2013/08/07 PHP
PHPTree――php快速生成无限级分类
2018/03/30 PHP
PHP FileSystem 文件系统常用api整理总结
2019/07/12 PHP
快速解决FusionCharts联动的中文乱码问题
2013/12/04 Javascript
jQuery遍历对象、数组、集合实例
2014/11/08 Javascript
javascript实现校验文件上传控件实例
2015/04/20 Javascript
基于JavaScript代码实现pc与手机之间的跳转
2015/12/23 Javascript
详谈jQuery unbind 删除绑定事件 / 移除标签方法
2017/03/02 Javascript
vue axios同步请求解决方案
2017/09/29 Javascript
vue路由事件beforeRouteLeave及组件内定时器的清除方法
2018/09/29 Javascript
QRCode.js二维码生成并能长按识别
2018/10/16 Javascript
jQuery pagination分页示例详解
2018/10/23 jQuery
详解JavaScript中的坐标和距离
2019/05/27 Javascript
vue中的过滤器实例代码详解
2019/06/06 Javascript
ES6 Proxy实现Vue的变化检测问题
2019/06/11 Javascript
Vue 实现输入框新增搜索历史记录功能
2019/10/15 Javascript
JS动态图片的实现方法完整示例
2020/01/13 Javascript
vue 动态创建组件的两种方法
2020/12/31 Vue.js
python 多线程应用介绍
2012/12/19 Python
线程和进程的区别及Python代码实例
2015/02/04 Python
python实现图片转字符小工具
2019/04/30 Python
django echarts饼图数据动态加载的实例
2019/08/12 Python
Python 异常处理Ⅳ过程图解
2019/10/18 Python
Tensorflow分批量读取数据教程
2020/02/07 Python
viagogo波兰票务平台:演唱会、体育比赛、戏剧门票
2018/04/23 全球购物
ABOUT YOU罗马尼亚:超过600个时尚品牌
2019/09/19 全球购物
金融专业毕业生推荐信
2013/11/26 职场文书
模具数控专业自荐信
2014/01/27 职场文书
保密普查工作实施方案
2014/02/25 职场文书
旷课检讨书500字
2014/10/14 职场文书
2014年扶贫工作总结
2014/11/18 职场文书
营运督导岗位职责
2015/04/10 职场文书
MySQL锁机制
2021/04/05 MySQL
JDK8中String的intern()方法实例详细解读
2022/09/23 Java/Android