New操做内部步骤、call/apply/bind区别、alert种类、逗号语句

1、new操做符具体干了什么?

var Person = Function(name){
  this.name = name
}

var p = new Person;

// new操做符作了如下三件事
var p = {}; // 建立了一个空对象
p.__proto__ = Person.prototype; // 将这个对象的 __proto__成员指向了Person.prototype
Person.call(p); // 将Person函数的this指针指向换成p,而后在调用Person函数

2、call 、apply和bind的区别

(一)、类似之处:

一、都是用来改变函数的this对象的指向的。
二、第一个参数都是this要指向的对象。
三、均可以利用后续参数传参。javascript

(二)、区别:

片断一

var xw = {
 name:'小王',
 gender:'男',
 aage:24,
 say: function(){
   alert(this.name + " , " + this.gender + " ,今年" + this.age)
 }
}

var xz = {
 name:'小张',
 gender: '男',
 age:25
}

xw.say()

片断一,显示为:小王,男,今年24岁。java

那么如何用wx的say方法来显示xz的数据呢?数组

一、call的用法:xw.say.call(xh)app

二、apply的用法:xw.say.apply(xh)函数

三、bind的用法:xw.say.bind(xh)();this

看到区别了吗?call和apply都是对函数的直接调用,而bind方法返回的仍然是一个函数,所以后面还须要()来进行调用才能够。spa

(三)、call和apply的区别

将例子稍加改造prototype

片断二

var xw = {
 name : "小王",
 gender : "男",
 age : 24,
 say : function(school,grade) {
    alert(
      this.name + " , " + 
      this.gender + 
      " ,今年" + 
      this.age + 
      " ,在" + 
      school + 
      "上" + 
      grade);                                
  }
}
var xz = {
 name : "小张",
 gender : "女",
 age : 25
}

一、call的用法:xw.say.call(xz,''实验小学','六年级')    // 小张,女,今年25,在实验小学上六年级。指针

二、apply的用法:xw.say.apply(xz,['实验小学','六年级']) // 小张,女,今年25,在实验小学上六年级。code

三、bind的用法:

  1. xw.say.bind(xz,"实验小学","六年级")();
  2. xw.say.bind(xz)("实验小学","六年级");

 

总结:

至于对于何时用什么方法,其实不用纠结。若是你的参数原本就是存在于一个数组中,那天然用apply,若是参数之间没有什么关联,就用call。

3、逗号语句,当有多个条件,之间用逗号隔开的时候,会到最右侧的条件结束。

for(i=0, j=0; i<10, j<6; i++, j++){
    k = i + j;
}
//5+5,返回10
for(i=0, j=0; i<2, j<8; i++, j++){
    k = i + j;
}
//7+7,返回14

4、js中3中弹窗的消息提醒(警告窗口、确认窗口、信息输入窗口)

alert("警告"); // 显示“肯定”,返回undefined
confirm("肯定要清空数据吗?"); //显示“取消”和“肯定”,返回false或者true
prompt('请输入数字',''); //显示输入框和空白输如框,有“取消”和“肯定”按钮,返回null或者输入的内容

5、javascript的3种主要类型、2种复合类型、3种特殊类型

主要类型:string、number、boolean

复合类型:function、object

特殊类型:null、undefind

相关文章
相关标签/搜索