利用javascript的面向对象的特性实现限制试用期

 更新时间:2011年08月04日 00:32:42   作者:  
Javascript是一种面向对象的脚本语言,其也具有面向对象的三大特性,但是今天我们不详细的讲解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());

      我们都知道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();


那我们在实例化的代码后边新定义一个构造器会怎么样呢?
复制代码 代码如下:

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的解释器会自下向上查找类的定义,当找到第一个类的定义(参数可以不同)就会进行执行并停止继续查找;
      到现在要实现限制试用期好像有点眉目了,我们根据时间的不同,只要我们可以控制其不能执行正确的构造函数就可以实现
复制代码 代码如下:

//构造函数
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() { };
};

      这里我们也正常弹出了对话框,那么我们可以稍微更改一下函数getDescription,来模拟复杂的业务数据处理

复制代码 代码如下:

Person.prototype.getDescription = function () {
return "我是 " + this.getName().toString() + ",性别 " + this.getSex().toString() + ",年龄 " + this.getAge().toString();
};


也许你回觉得这个太没有技术含量了,那么我们在比较大的项目中我们可以进行代码混淆、进行代码转义,同时函数定义和实例化根本不在同一个文件中!
复制代码 代码如下:

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常用脚本汇总(一)

    这篇文章主要介绍了JavaScript常用脚本汇总系列的第一篇,给大家分享的是jquery限制文本框只能输入数字、封装DOMContentLoaded事件、用原生JS对AJAX做简单封装、跨域请求之JSONP、千分位格式化,有需要的小伙伴们参考下吧。
    2015-03-03
  • 浅谈javascript的call()、apply()、bind()的用法

    浅谈javascript的call()、apply()、bind()的用法

    这篇文章主要为大家详细介绍了javascript的call()、apply()、bind()的用法,探讨JavaScript中函数的一些特殊用法,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • Next项目路径添加指定的访问前缀方法详解

    Next项目路径添加指定的访问前缀方法详解

    这篇文章主要介绍了Next项目路径添加指定的访问前缀方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • 函数四种调用模式以及其中的this指向

    函数四种调用模式以及其中的this指向

    本文主要介绍了函数四种调用模式以及其中的this指向的相关知识,具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • javascript中数组的常用算法深入分析

    javascript中数组的常用算法深入分析

    这篇文章主要给大家介绍了关于javascript中数组的常用算法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用javascript具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • JS 实现完美include载入实现代码

    JS 实现完美include载入实现代码

    在写这个之前在网上搜索了些资料,发现以前写的include都存在2个问题,这也是include需要解决的比较重要的2个问题。
    2010-08-08
  • js 使用ajax设置和获取自定义header信息的方法小结

    js 使用ajax设置和获取自定义header信息的方法小结

    这篇文章主要介绍了js 使用ajax设置和获取自定义header信息的方法,结合实例形式总结分析了js 使用ajax自定义设置和获取header响应信息相关操作技巧与使用注意事项,需要的朋友可以参考下
    2020-03-03
  • JavaScript实现抖音罗盘时钟

    JavaScript实现抖音罗盘时钟

    这篇文章主要为大家详细介绍了JavaScript实现抖音罗盘时钟,特别实用的效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • 刷新页面后让控制台的js代码继续执行

    刷新页面后让控制台的js代码继续执行

    这篇文章主要介绍了刷新页面后让控制台的js代码继续执行,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • 从JavaScript的函数重名看其初始化方式

    从JavaScript的函数重名看其初始化方式

    从JavaScript的函数重名看其初始化方式...
    2007-03-03

最新评论