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,如需转载请自行联系原作者

相关文章
|
2月前
|
设计模式 JavaScript 前端开发
JavaScript进阶挑战:巩固核心知识点
以上内容涵盖了从基础到进阶水平所需掌握内容,在日常工作中需要持续实践和深入学习才能真正精通这些知译点。
113 12
|
6月前
|
机器学习/深度学习 JavaScript 前端开发
JS进阶教程:递归函数原理与篇例解析
通过对这些代码示例的学习,我们已经了解了递归的原理以及递归在JS中的应用方法。递归虽然有着理论升华,但弄清它的核心思想并不难。举个随手可见的例子,火影鸣人做的影分身,你看到的都是同一个鸣人,但他们的行为却能在全局产生影响,这不就是递归吗?雾里看花,透过其间你或许已经深入了递归的魅力之中。
268 19
|
8月前
|
存储 前端开发 JavaScript
JavaScript的重要知识点
以上就是JavaScript的一些重要知识点。学习JavaScript需要理解和掌握这些知识点,才能编写出高效、可维护的代码。同时,还需要不断实践,通过编写项目来提高编程技能。
138 14
|
8月前
|
JavaScript
JS实现多条件搜索函数
JS封装的多条件搜索
|
10月前
|
JavaScript 前端开发
JavaWeb JavaScript ③ JS的流程控制和函数
通过本文的详细介绍,您可以深入理解JavaScript的流程控制和函数的使用,进而编写出高效、可维护的代码。
213 32
|
9月前
|
JavaScript 前端开发 Java
详解js柯里化原理及用法,探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用
柯里化是一种强大的函数式编程技术,它通过将函数分解为单参数形式,实现了灵活性与可复用性的统一。无论是参数复用、延迟执行,还是函数组合,柯里化都为现代编程提供了极大的便利。 从 Redux 的选择器优化到复杂的数据流处理,再到深度嵌套的函数优化,柯里化在实际开发中展现出了非凡的价值。如果你希望编写更简洁、更优雅的代码,柯里化无疑是一个值得深入学习和实践的工具。从简单的实现到复杂的应用,希望这篇博客能为你揭开柯里化的奥秘,助力你的开发之旅! 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一
|
存储 JavaScript 前端开发
JS的ES6知识点
【10月更文挑战第19天】这只是 ES6 的一些主要知识点,ES6 还带来了许多其他的特性和改进,这些特性使得 JavaScript 更加现代化和强大,为开发者提供了更多的便利和灵活性。
254 58
|
前端开发 JavaScript 开发者
除了 Generator 函数,还有哪些 JavaScript 异步编程解决方案?
【10月更文挑战第30天】开发者可以根据具体的项目情况选择合适的方式来处理异步操作,以实现高效、可读和易于维护的代码。
|
JavaScript 前端开发
JavaScript 函数语法
JavaScript 函数是使用 `function` 关键词定义的代码块,可在调用时执行特定任务。函数可以无参或带参,参数用于传递值并在函数内部使用。函数调用可在事件触发时进行,如用户点击按钮。JavaScript 对大小写敏感,函数名和关键词必须严格匹配。示例中展示了如何通过不同参数调用函数以生成不同的输出。
|
存储 JavaScript 前端开发
JS函数提升 变量提升
【10月更文挑战第6天】函数提升和变量提升是 JavaScript 语言的重要特性,但它们也可能带来一些困惑和潜在的问题。通过深入理解和掌握它们的原理和表现,开发者可以更好地编写和维护 JavaScript 代码,避免因不了解这些机制而导致的错误和不一致。同时,不断提高对执行上下文等相关概念的认识,将有助于提升对 JavaScript 语言的整体理解和运用能力。

热门文章

最新文章