Javascript 模拟 new

一、开始

同样我们先来看看new操作符为我们做了什么事情:

function Person(name, sex){
    this.hobby = ‘shopping‘;
    this.name = name;
    this.sex = sex;
    this.sayName = function(){
        console.log(this.name)
    };
}
Person.weight = ‘60kg‘;
Person.prototype.friend = ‘rose‘;
var person = new Person(‘jack‘,‘age‘);
person.sayName();

输出是:

可以看到原型链的对象被继承下来了,定义在方法外的属性没有被继承下了,返回了一个新对象,可以传递参数

二、实现模拟

我们要做的是,返回一个新对象,吧原型链指向构造函数,传递参数

function Create(){
    var obj = {};
    var Constructor = [].shift.call(arguments);
    obj.__proto__ = Constructor.prototype;
    Constructor.apply(obj,arguments);
    return obj;
};
var person = Create(Person,‘jack‘,‘age‘);
person.sayName();

其实很多东西只要是知道了干什么的,再去实现起来就很有思路了

时间: 2024-08-28 20:46:04

Javascript 模拟 new的相关文章

javascript模拟post提交隐藏地址栏的参数

想要隐藏地址栏的参数,就只能用javascript模拟post提交,下面是示例代码,需要的朋友可以看看 通过js模拟post提交 1:请求需要的参数过长,超过get允许的最大长度 2:想要隐藏地址栏的参数 view source print? 01 //新创建一个form表单 02 document.write('<form name=myForm></form>');  03 var myForm=document.forms['myForm'];  04 myForm.acti

javascript模拟Windows系统下的扫雷游戏

javascript模拟Windows系统下的扫雷游戏. 说好的一周一篇随笔的,这才第三周就延迟交作业了,深深的自责中... 先玩一把 demo 很久以前写的 当时都没写注释的 刚加上了 (尼玛,好多自己都不认识了 ... ) 不足的敌方就是本来想写个游戏排名的统计的,等有空了再加上(好像每次都这么说 然后就等好久好久...) 还有就是没有实现:点击第一个格子不能是雷的功能 刚才在手机端 打开了下这篇文章 排版完全乱了... <style> ul{padding:0;list-style:no

JavaScript 模拟重载

/** * 参数个数对应 各自处理的函数 不指定 则执行 默认函数 * [ * d : function ( ) {} * , 0 : function ( ) {} * , 1 : function ( a ) {} * , 2 : function ( a, b ) {} * , 3 : function ( a, b , c ) {} * , 4 : function ( a, b , c, d ) {} * ] */ ! function () { var _reload = ( fun

javascript模拟post提交

通过js模拟post提交1:请求需要的参数过长,超过get允许的最大长度2:想要隐藏地址栏的参数 //新创建一个form表单document.write('<form name=myForm></form>');   var myForm=document.forms['myForm'];   myForm.action='runEmpAttendance';   myForm.method='POST'; var input = document.createElement('i

javascript模拟select下拉菜单

javascript模拟select下拉菜单: 由于自带的select下拉菜单确实是不够美观,并且美化的潜力也不够大,所以对外观要求比较高的网站,基本都要使用自定义的select下拉菜单,下面就提供了一个简单的例子供大家参考,代码实例如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="

javascript模拟重力感应弹跳,做个不一样的登陆端口

知识点:原生js动画效果 ,重力系统,弹跳算法, 迭代与递归, 动画序列, , 两种定时器配合使用, 循环判断注意事项 ,编程思想与解决方案思维. html代码: <div id="bg_wrap"> <div><img src="images/1.jpg" width="100%" height="100%" alt="背景图"/></div> <di

【JavaScript】吃饱了撑的系列之JavaScript模拟多线程并发

前言 最近,明学是一个火热的话题,而我,却也想当那么一回明学家,那就是,把JavaScript和多线程并发这两个八竿子打不找的东西,给硬凑了起来,还写了一个并发库concurrent-thread-js.尴尬的是,当我发现其中的不合理之处,即这个东东的应用场景究竟是什么时,我发现我已经把代码写完了. ??注意! 本文中的线程指的都是用JS异步函数模拟的“假线程”,不是真正意义上的多线程,请不要误解?? github地址 https://github.com/penghuwan/concurren

javascript模拟实现继承,继承一次父类模板和原型对象

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getS

javascript模拟类及类继承

// 模拟Class function Rectangle(width, height){ this.height = height; // 实例变量(public) this.getWidth = function(){ return width; } // 实例变量(private) this.setWidth = function(w){ width = w; } Rectangle.INSTANCE_COUNT++; } Rectangle.prototype.getSize = fun

js javascript 模拟点击 超级链接点击 转

转自:http://mo2g.com/view/42/ 我尝试过多次用jQuery模拟用户点击a标签的功能,但都没有成功,并且困扰了很久.前段时间的一次发呆,冒出了新的想法,于是就动手进行了测试. 先看下边的代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <html> <head> <meta charset="UTF-8"> <title>磨途歌-A标签测试1</tit