网站首页 > 技术文章 正文
函数的四种存在形态:
1.函数形态
2.方法形态 将函数赋值给某一个对象的成员,那么就称为方法
3.构造器形态
4.上下文形态
函数形态:
var foo = function { alert(this); //this是window };
方法形态:
o = {}; o.foo = foo; //将函数foo赋值给对象o的foo属性 o.foo; //弹出的是object,此时的this表示object
var lib = { test:function { alert(this); //此处的this表示object(lib对象本身)
//var that = this; //要想匿名函数中this表示lib对象,可以这样 (function { alert(this); //此处的匿名函数不属于lib对象,所以this任然表示window }); } }; lib.test;
构造器(构造函数) var p = new Person; 1、new创建了对象,并开辟了空间 2、将对象的引用地址传递给函数,在函数中用this接收 3、构造方法执行结束,返回this
var Person = function { this.age = 19; this.name = "Mr靖"; return "{}"; }; var p = new Person; alert(p.name); //弹出的是undefined,由于函数返回的是一个对象,所以直接将这个对象返回给person,而忽略age,name属性
var Person = function { this.age = 19; this.name = "Mr靖"; return 123; }; var p = new Person; alert(p.name); //弹出“Mr靖”,由于返回值不是对象,所以直接忽略 alert(p); //弹出object
改变的东西有: 构造函数改变了函数的返回值 如果函数的返回值是一个对象,那么就按照返回值来返回 如果返回值不是一个对象就忽略返回值,直接返回this
上下文调用模式
函数.apply(对象, [参数列表])
var foo1 = function(a, b) { alert(this); return a > b ? a : b; }; var num = foo1.apply(null, [112, 34]); //此时foo1是函数形态,this表示window num = foo1.apply({}, [112, 34]); //此时foo1是方法形态,this表示参数中传入的对象{}
函数.call(对象, 参数列表);
var num1 =foo1.call(null,112,34);
num1=foo1.call({},112,34);
猜你喜欢
- 2024-11-16 3.1 Python高级编程-函数式编程工具
- 2024-11-16 面向对象编程的一些思考(面向对象编程的理解)
- 2024-11-16 知识总结-Java8 Stream函数式编程
- 2024-11-16 bind、call、apply 区别?如何实现一个bind?
- 2024-11-16 Javascript基础重拾笔记之手写apply、call
- 2024-11-16 java 8新特性 常用内置函数式接口
- 2024-11-16 7、JavaScript 内置的常用对象有哪些?该对象常用的方法(必会)
- 2024-11-16 Java中“::”是什么含义(java中+是什么)
- 2024-11-16 Java 8 中的 Function:让代码从繁琐到简洁的魔法工具
- 2024-11-16 13万字详细分析JDK中Stream的实现原理(中)
- 标签列表
-
- content-disposition (47)
- nth-child (56)
- math.pow (44)
- 原型和原型链 (63)
- canvas mdn (36)
- css @media (49)
- promise mdn (39)
- readasdataurl (52)
- if-modified-since (49)
- css ::after (50)
- border-image-slice (40)
- flex mdn (37)
- .join (41)
- function.apply (60)
- input type number (64)
- weakmap (62)
- js arguments (45)
- js delete方法 (61)
- blob type (44)
- math.max.apply (51)
- js (44)
- firefox 3 (47)
- cssbox-sizing (52)
- js删除 (49)
- js for continue (56)
- 最新留言
-