创建对象的方式以及call,apply,bind的区别

创建对象的方式有四种

1.直接量

var obj={

属性名:属性

方法名:function(){}

}

2.通过构造函数创建对象,这样能够批量创建多个具有相同属性的子对象(顺便介绍call,apply,bind三个关键字的区别应用)

function person(name,age){

this.name=name;

this.age=age;

}

或者function person2(name,age){

this.name=argument[0];

this.age=argument[1];

}

第一种方式用call

functon student(name,age.sex,tel){

person.call(this,name,age);

this.sex=sex;

this.tel=tel;

}

call()的作用就是让person中的this的指向全部都改成call中的内容,并且能在里面追加参数

第二种方式用apply

functon student(name,age.sex,tel){

person2.apply(this,[name,age]);

this.sex=sex;

this.tel=tel;

}

还有第三种方式就是用bind

例子1:

function person(name,age){

this.name=name;

this.age=age;
console.log(this.name,this.age)

}

var student=person.bind();
student(9,10);

例子2:

function calc(base,bonus){

console.log(this.ename+"的总工资是"+(base+bonus)

}

var lilei ={ename:"li lei"}

var Lilei=calc.bind(lilei);

bind其实就是讲旧的函数复制了一份给了新的函数,并且永久绑定this,并且也可以永久绑定参数。

总结来说call借用别人的方法,完成自己的事情需要把实参按照形参的个数传进去。立刻执行

apply也是借用别人的方法,但是传递参数是按照数组的方式,需要注意实参跟形参的顺序。也是立刻执行

bind是创建了一个新的函数,但是不立刻执行。

原文地址:https://www.cnblogs.com/yzxyzx/p/11369272.html

时间: 2024-10-08 14:09:07

创建对象的方式以及call,apply,bind的区别的相关文章

前端JS面试题汇总 Part 3 (宿主对象与原生对象/函数调用方式/call与apply/bind/document.write)

原文:https://github.com/yangshun/front-end-interview-handbook/blob/master/questions/javascript-questions.md 最近将持续翻译JavaScript面试题,希望对各位有所帮助. (文章中斜体字部分为译者添加) 目录: Part 1(事件委托/this关键字/原型链/AMD与CommonJS/自执行函数) Part 2 (null与undefined/闭包/foreach与map/匿名函数/代码组织)

javascript中call,apply,bind的区别

在JS中,这三者都是用来改变函数的this对象的指向的,他们有什么样的区别呢. 在说区别之前还是先总结一下三者的相似之处: 1.都是用来改变函数的this对象的指向的.2.第一个参数都是this要指向的对象.3.都可以利用后续参数传参.那么他们的区别在哪里的,先看一个例子. var xw = { name : "小王", gender : "男", age : 24, say : function() { alert(this.name + " , &qu

call apply bind 的区别,this的四种绑定方式

1. apply()中有两个参数,不一定是必填项,当第一个参数什么都不填或则是null/undefined,默认为window 第二个参数必须是数组,数组中的元素和函数的参数对应 Call怎么使用 用途,用于修改函数中的this指向 也是函数ming.call(),执行的元素先替换函数中的this,然后再执行这个函数 Call中参数的分析1. call函数的第一个参数是什么,函数中this就换成什么,当不填或null/undefined,里面的this就是window2. 从第二参数开始,跟函数

浅谈call apply bind的区别

这三个方法的用法非常相似,将函数绑定到上下文中,即用来改变函数中this的指向.举个例子: var zlw = { name: "zlw", sayHello: function (age) { console.log("hello, i am ", this.name + " " + age " years old"); } }; var xlj = { name: "xlj", }; zlw.sayHe

call apply bind的区别

bind : bind绑定完this的指向后会返回一个新的函数体,不会被立即调用 call apply : 绑定完this的指向后会立即调用 call : 第一个参数是this的指向,第二个以及后面的所有参数需要一个个进行传递 apply : 第一个参数是this的指向,第二个参数是一个数组 原文地址:https://www.cnblogs.com/szj-/p/10674761.html

javascript中的call(),apply(),bind()方法的区别

之前一直迷惑,记不住call(),apply(),bind()的区别.不知道如何使用,一直处于懵懂的状态.直到有一天面试被问到了这三个方法的区别,所以觉得很有必要总结一下. 如果有不全面的地方,后续再进行补充. 1. 改变this的指向 var obj = { name : '张三', age : 17, myFun : function () { console.log(this.name + ' ' + this.age); } } var obj2 = { name : '李四', age

this的指向问题 call apply bind 中的this

在函数中this指向谁:     函数中的this指向谁,是由函数被调用的那一刻就确定下来的 平时确定一个函数中的this是谁,我们需要通过调用模式来确定 1. 函数调用模式 this ---> window 函数名() 2. 方法调用模式 this ---> 调用方法的对象 对象.方法名() 3. 构造函数调用模式 this ---> 创建出来的实例  new 函数名() 4. 上下文调用模式 this ---> call和apply的第一个参数 函数名.call() 1 //

call,apply,bind

call,apply,bind 一.call&apply call, apply都属于Function.prototype的方法,因为属于Function.prototype,所以每个Function对象实例,也就是每个方法都有call, apply属性啦. 如果不明白,请见“Javascript之一切皆为对象3”. 而且它们的作用都是一样的,只是使用方式不同而已. 作用:借用别人的方法来调用,就像自己有这个方法一样. 咦,那它们怎样才能达到这目的呢? 对象. 对象? 是的,其实就是改变执行上下

call() , apply() , bind() 方法,

先来说说call() 和 apply()方法: 在<javascript高级程序设计>中有提到:函数也是对象,函数原型链的顶层实际上是指向Object的.既然函数是对象,那么自然就具有属性和方法." 每个函数都包含两个非继承而来的方法  call() , apply() " call() , apply() , 这两个方法其本质就是设置函数体内this对象指向的值,换个说法来理解这句话,一个对象可以通过call() 和 apply() 来调用其他对象的方法.比如说对象A拥有