原型 call&&apply

JavaScript中的一些小细节

原型,原型链

object.prototype是所对象的老祖宗 形象化的理解。在这个老祖宗里面存着很多具体的方法 ;例如toString()这种方法就在里面存放着。同样的Array.prototype,Number.prototype里面都有这种方法还有Boolean;

下面是一些例子

123.toString();
//在这里.的优先级高,浏览器会以为这是一个数,会报错;
//应该这样来操作做:
var num = 123;
num.toString();
console.log(num);
//此时就会输出'123'

有一道题是这样的: 所有的对象都会继承object.prototype;
这句话是错误的 为什么呢?
这是因为有个东西叫object.creat(原型) 这个函数可以构造以这个原型为父元素的对象。这个括号里面的原型必须填写,且只能填写对象和null;可以为null

原型

obj.__proto__={name:"sunny"};
console.log(obj.name);
//此时会输出undefined

说明proto是隐式的内部属性,自己写系统是不认地

var obj=object.creat(null);
document.write(obj);
//此时会报错,因为document.write()在打印的时候会调用toString()方法,没
//是不行的,会报错
var obj=object.creat(null);
obj.toString=function (){
  return '建哥身体好';
  }
  document.write(obj);
  //此时就会打印   建哥身体好

在javascript中 可正常计算的范围为 前16位 后16位

call&&apply

作用有:

  1. 改变this指针的指向;
 function Person(){
 //this==>obj
 this.name='jiange';
 this,sge=21;
 }
 var person = new Person();
var obj ={
}
Person.call(obj,'wang',300);
//此时就相当于构造了一个obj对象 它有name和age属性  值为wang和300
  1. 可以借调其它对象的属性调用给自己
function Preson(name,age,sex){
	this.name=name;
	this.age=age;
	this.sex=sex;
}
function Student(name,age,sex,tel,grade){
//这里要用this  因为要使调用后的给自己所以要为this
	Person(this,name,age,sex);
	this.tel=tel;
	this.grade=grade;
}
var student = new Student('sunndy',10,'mael',139,2017)call

call和apply的区别

  1. 首先拼写有差异,单词不一样;
  2. call可以一位一位的传参数,而apply不行,apply只能传数组 如person.apply(this,[height,width]),剩余的二者都一样。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值