JavaScript一些小知识点的记录2之函数2

简介:

1.当构造函数不需要传递参数时,可以省略那一对小括号。
例如:obj=new Object;
2访问属性的两种方法:
(1).作为对象的属性的话就可以通过.号进行访问。
例如:var a=new String('kehaojian');
alert(a.substring(2,3));
结果是h
(2).使用方括号进行访问.
var a=new Object;
a.y=33;
alert(a['y']);

结果是33

变量的四种不同结果:
var p="kehaojian";
function ke(){
 var p="ke";
alert(this.p); 
}
ke();
结果kehaojian

var p="kehaojian";
function ke(){
  p="ke";
alert(this.p); 
}
ke();

结果:ke

var p="kehaojian";
function ke(){
var  p="ke";
alert(p); 
}
ke();

结果为ke

p="kehaojian";
function ke(){
  p="ke";
alert(this.p); 
}
ke();

结果为ke

3.this关键字表示对某个对象的引用,可以把它理解为一个引用类型的变量,但它的值是由系统确定的,也就是说this无法被赋值的。
(1).在函数体内没有显式的说明它是一个对象,而非window对象的属性时,那么此时的this就是这个对象。
如:var ke=new Object;
ke.hao=function(){
alert(this===ke);
}
结果为true;

function(){
alert(this===windows);
}
function ke(){
alert(this===window);
}
window.ke();
结果为true
(2).当用new关键字来调用函数时,此时的this就是这个构造函数创建的对象。
var ke=new Object;
ke.hao=function(){
alert(this===ke);
}

4.函数Function对象的方法:(相当于Function类)
apply:有两个参数,一个是用来改变this的引用,另一个是用来传递参数列表(一般为数组)。适用于动态的改变this的引用。
call:和apply相似,只是传递的参数有点不同,call第二个参数不是数组。

var obj=new Object;
var func1=new Function("a","b","alert(\"func1\"+(this===window)+(a-b))");
var func2=function(a,b){
alert("func1"+(this===obj)+(a-b));
}
func1(4,5);
func1.apply(obj,[4,5]);
func2(4,5);
func2.apply(obj,[4,5]);

函数的执行环境:

从里到外,里值代替外值,外值仍不变。

caller属性:用来显示函数的调用者。
1.在全局执行环境下,它的值为null
2.在另一个函数中被调用的话,它的值就是那个函数(整个格式都不变)。
var ke=new Function("alert("ke:"+ke.caller)");
function haojian(){
ke();//在这个函数中调用a函数;
alert('haojian:'+haojian.caller);
}
haojian();

结果是ke:function haojian(){
ke();//在这个函数中调用a函数;
alert('haojian'+haojian.caller);
}

haojian:null

5.函数中的arguments对象:只用在函数体内,用来管理函数的实际参数。
有两个属性:
(1).callee:用来显示正在执行的函数,也就是函数的本身。
function ke(){
alert(arguments.callee); 
}
window.ke();

结果是
function ke(){
alert(arguments.callee);

(2).length:用来显示函数被调用时实际传递的参数个数。
例如:function ke(){
alert(arguments[0]+arguments[1]);

window.ke(1,2);
结果是3


6.Constructor: 构造函数:在对象创建或者实例化时候被调用的方法。通常使用该方法来初始化数据成员和所需资源。

每个对象都有一个指向创建自己的构造函数的属性;用this来创建构造函数。
如:function ke(x,y){
this.x=x;
this.y=y;

}
var obj=new ke(4,5);
alert(obj.x+obj.y);


本文转自gauyanm 51CTO博客,原文链接:http://blog.51cto.com/gauyanm/561421,如需转载请自行联系原作者

相关文章
|
1天前
|
JavaScript 前端开发
在JavaScript中,函数原型(Function Prototype)是一个特殊的对象
JavaScript中的函数原型是一个特殊对象,它为所有函数实例提供共享的方法和属性。每个函数在创建时都有一个`prototype`属性,指向原型对象。利用原型,我们可以向所有实例添加方法和属性,实现继承。例如,我们定义一个`Person`函数,向其原型添加`greet`方法,然后创建实例`john`和`jane`,它们都能调用这个方法。尽管可以直接在原型上添加方法,但推荐在构造函数内部定义以封装数据和逻辑。
7 1
|
3天前
|
前端开发 JavaScript 数据处理
在JavaScript中,异步函数是指什么
【5月更文挑战第9天】JavaScript中的异步函数用于处理非立即完成的操作,如定时器、网络请求等。它们可通过回调函数、Promise或async/await来实现。示例展示了如何使用async/await模拟网络请求:定义异步函数fetchData返回Promise,在另一异步函数processData中使用await等待结果并处理。当fetchData的Promise解析时,data变量接收结果并继续执行后续代码。注意,调用异步函数不会阻塞执行,而是会在适当时间点继续。
10 0
|
3天前
|
自然语言处理 JavaScript 前端开发
在JavaScript中,this关键字的行为可能会因函数的调用方式而异
【5月更文挑战第9天】JavaScript中的`this`关键字行为取决于函数调用方式。在非严格模式下,直接调用函数时`this`指全局对象,严格模式下为`undefined`。作为对象方法调用时,`this`指向该对象。用`new`调用构造函数时,`this`指向新实例。通过`call`、`apply`、`bind`可手动设置`this`值。在回调和事件处理中,`this`可能不直观,箭头函数和绑定方法可帮助管理`this`的行为。
10 1
|
3天前
|
JavaScript 前端开发 网络架构
JavaScript中的箭头函数是一种新的函数表达形式
【5月更文挑战第9天】JavaScript的箭头函数以简洁语法简化函数定义,其特性包括:1) 不绑定自身this,继承上下文的this,适合回调和事件处理;2) 没有arguments对象,需用剩余参数语法访问参数;3) 不能用作构造函数,无new调用;4) 没有prototype属性,不支持基于原型的继承。箭头函数在特定场景下优化了this处理,但使用时要注意与普通函数的差异。
8 2
|
6天前
|
JavaScript 前端开发
js的一些内置函数
js的一些内置函数
7 1
|
6天前
|
JavaScript 前端开发 索引
js的includes函数
js的includes函数
11 1
|
6天前
|
JavaScript 安全 前端开发
js的map函数
js的map函数
7 0
|
6天前
|
JavaScript 前端开发
js的filter函数
js的filter函数
9 1
|
6天前
|
JavaScript 前端开发
js的函数
js的函数
7 0
|
6天前
|
JavaScript 前端开发
js的join函数
js的join函数
8 1