面向对象---函数

闭包和继承
自运行函数也叫自调用函数,即函数声明之后,即刻执行。
匿名函数,就是没有定义函数名的函数。
场景:仅执行一次的函数。
特点:自运行的匿名函数可以有效的保证在页面上写入JavaScript,而不会造成全局变量的污染。
写法:
可直接写

~function(){console.log("Hello world");}();
+function(){console.log("Hello world");}();
-function(){console.log("Hello world");}();
!function(){console.log("Hello world");}();
delete function(){console.log("Hello world");}();
void function(){console.log("Hello world");}();

前面需要数据

console.log(1*function(){return 7};);
console.log(16/function(){return 2};);
console.log(9%function(){return 10};);

常用的写法:
(function(){console.log("hello world");})();
(function(){console.log("hello world");}())
闭包:
闭包,是指在函数外部访问函数作用域中变量的函数。
闭包,可以访问函数内部的局部变量,并让其长期驻留内存。

function a(){
var num = 1;
return function(){
return ++num ;
}
}
var fun = a();
alert(fun());//2
alert(fun());//3

、、、、、、、、、、、、、、、
原型

JavaScript中每个对象有prototype(原型)属性。
JavaScript中对象的prototype属性的解释是:返回对象类型原型的引用。
比如我们有一个函数叫做Foo,这个Foo是由其原型构造出来的。

function Foo()------>prototype----->Foo.prototype

Foo.prototype----->constructor---->function Foo()

Foo函数是由Foo函数的原型对象构造出来的。
prototype 是一个指针,指向一个对象。这个对象的用途是,包含所有实例共享的属性和方法。

所有通过同一个构造函数创建的实例对象,都会共享同一个prototype。
原型诞生的意义就是可以实现代码复用。
就是把需要共享的属性方法放到一个对象里,这个对象就是原型(对象)。

function Person(_name){
this.name = _name;
this.age = 19;//使用p1.age访问时age属性从构造函数内容实例查询起。如果没有就向原型prototype属性上查询。
}

alert( Person.prototype ); // object
Person.prototype.age = 18; // 给原型对象增加属性
var p1 = new Person("张三");
alert(p1.name+", "+p1.age); //张三, 18
var p2 = new Person("李四");
alert(p2.name+", "+p2.age); //李四, 18

//p2_proto_age//查询原型下的age属性。
instanceof运算符
用来测试一个对象在其原型链中是否存在一个构造函数的prototype属性。
两者的区别的主要是:
A.isPrototypeOf(B) 判断的是A对象是否存在于B对象的原型链之中。
A instanceof 原型链B判断的是B.prototype是否存在与A的原型链之中。
hasOwnProperty

在实例中是否包含该属性,不在原型中查找该属性。

function Person(_name){
this.name = _name;
}
var p1 = new Person("a");    
alert( p1.hasOwnProperty('name') ); // true

猜你喜欢

转载自www.cnblogs.com/l8l8/p/8966891.html