JS中对象与函数相关知识总结

S中对象与函数相关知识总结

对象与函数

函数的定义方式:
JS中函数是特殊的对象,可以拥有自己的属性和方法,属性被定义为局部变量,这样可以有效地防止变量的污染,方法被定义为闭包(定义在函数内部的函数)
1、通过函数直接量表达式定义(适合于只要使用一次的场景,在JS中使用最多的是回调函数):
function_name:function(x,y){ return x+y};
2、通过函数定义式表达
function function_name(x,y){return x+y;}
3、通过函数Function构造函数定义
var f=Function{“x”,“y”,“return x+y;”};
函数
1、函数是对象

function test() {};
console.log(test instanceof Object);    //    true

2、对象是通过函数创建的

function test() {
    this.name="哈哈"
};
var test2=new test();
console.log(test2 instanceof Object);    //true
var obj={
name:"陈";
age:"王";
}
var obj=new object()
{
obj.name:"陈";
obj.age:"王";
}

原型与原型链

原型概念:每一个JavaScript对象创建的时候,就会与之关联另外一个对象,这个对象就是原型,每一个对象都会从原型中“继承”属性。
1、prototype
这是每个对象(除null外)都会有的属性,叫做__proto__,这个属性会指向该对象的原型。

function Person() {

}
var person = new Person();
console.log(person.__proto__ === Person.prototype); // true
function Person(age)
{ this.age=age;}
Person.prototype.name='David';
var person1=new Person();
var person2=new Person();
console.log(person1.name);//David
console.log(person2.name);//David

上述例子中,函数的prototype属性指向了一个对象,这个对象是调用构造函数的时候创建实例的原型。
2、constructor
每个原型都有一个constructor属性,指向该关联的构造函数。

function Person() {

}

var person = new Person();

console.log(person.__proto__ == Person.prototype) // true
console.log(Person.prototype.constructor == Person) // true
console.log(Object.getPrototypeOf(person) === Person.prototype) // true

3、原型链
每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。那么如果原型对象等于另一个类型的实例,此时的原型对象将包含一个指向另一个原型的指针,相应地,另一个原型中也包含着一个指向另一个构造函数的指针。假如另一个原型又是另一个类型的实例,那么上述关系依然成立。如此层层递进,就构成了实例与原型的链条。这就是所谓的原型链的基本概念
参考博文:https://www.cnblogs.com/loveyaxin/p/11151586.html

构造函数

默认函数首字母大写
构造函数没有显示返回任何东西。new操作符会自动创建给定的类型并返回给他们,当调用构造函数时候,new操作符创建this对象,且类型就是构造函数的类型
也可以在构造函数中显示调用return.如果返回的值是一个对象,它会代替新创建的对象实例返回。如果返回的值是一个原始类型,它会被忽略,新创建的实例会被返回。

this

this指针代表的是当前执行代码的对象的所有者
一、显示操作this指针的方法
1、使用new操作符
Javascript引擎会在实例化对象内部定义一个新的对象并将其存入this指针。所有此对象内部用到this的代码实际上都是指向这个新的对象。
2. 通过Function.apply或者Function.call的原型方法。
我们可以将this指针指代的对象以参数的形式传入,这个时候,函数内部使用的this指针就是传入的参数。
二、引入了临时变量导致的this指针的转移的解决办法。
1、不引入临时变量,每次使用均使用Utility.getCookie进行调用
2、getCookie函数内部使用Utility.decode显式引用decode对象而不通过this指针隐式引用(如果Utility是一个实例化的对象,也即是通过new生成的,那么此法不可用)
3、使用Funtion.apply或者Function.call函数指定this指针

参考文章:
https://www.cnblogs.com/yuanzhiguo/p/8109540.html
https://www.cnblogs.com/ouber23/p/3708931.html
https://www.cnblogs.com/zhang134you/p/5987870.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值