这几天一直在学习javascript,脑子里面被各个书籍的概念充斥,比较混乱,现在整理一下。
一。Function
要理解javascript面向对象,首先必须理解js的function.在js中,函数的本质是对象,也就是说函数是function类型的实例,根据这里理解,函数名只是指向函数对象的指针而已(根据这个我们很好理解,javascript的函数没有重载的概念)。
函数的定义方式有三种:
1.函数声明:
function sum(a,b){
return a+b;
}
2.函数表达式:
var sum = function(a,b){
return a+b;
}
3.function构造函数:
var sum = new Function("a","b","return a+b");
三种方式的区别是:函数声明式在代码执行前被解析器添加到执行环境中,也就是函数声明可以放在调用代码之后。其他两者则不一样。构造函数方法,影响性能,因为有两次解析,一次式解析常规,另一次式对传入构造函数的字符串解析。
函数的使用
由于函数名式一个变量所以函数既可以当作参数,也可以当作函数的返回值。
函数的属性和方法
(1)内部特殊属性
arguments:一个类数组对象,保存着传入函数的所有参数。这个对象还有一个特殊的属性callee ,该属性是一个指针,指向拥有这个argumnets的函数。
function f(){
fi(num<=1){
return 1;
}else{
return num*arguments.callee(num-1)
}
}
this:函数体内部的this对象指向调用此函数的对象。
leng:希望接受的参数个数,也就是函数定义的参数个数。
property:--。
apply():在特定的作用域中条用函数,实际上等于设置函数体内的this值。
call():与上类是,不同的是apply有两个参数,一个是作用域,另一个是数组或argumnets。而call,参数不限定,而且参数直接传递给函数。
bind():ejs5定义的方法。这个方法会创建一个函数的新实例,并且this会被设置为传入bind()参数的值。
(2)一般属性
由于function也是对象,所以函数也有方法和属性。
定义在function内的属性是无法直接外部访问的。但是在外面创建的属性相当与函数的静态方法跟属性
///////////////////////
function test(){
var tt ='1';
function getTT(){
console.log(tt);
};
}
test.log=function(){
console.log('this is the static method');
}
test.svar='static variable';
console.log(test.svar);
test.log();
二。对象
1.对象的创建
js对象的创建从本质上分为两种方法:
(1).根据object创建对象。
不管是new object对象还是字面量,或者工才厂模式,其本质都是返回一个object实例。
这种方式有一个比较重大的问题是 无法知道对象的具体类型。 也就是说只能typeof ==object.
(2).根据function创建对象。(也就是构造函数模式)
示例如下:
//////////
function Person(name,age,job){
this.name=name;
this.job = job;
this.sayName=function(){
alert(this.name);
};
}
var person = new Person("liuxiang","23","soft");
构造函数的函数名首字母大写(本质上没有这个规定,只是一种不成文的规定,方便区别构造函数跟普通函数)。
分享到:
相关推荐
JavaScript是一种广泛应用于Web开发的脚本语言,尤其在构建交互式网页和动态应用程序...通过阅读《JavaScript面向对象技术整理.docx》和参考《javascript中文经典帮助手册.chm》,你可以更深入地学习和掌握这些知识点。
韩顺平老师的JavaScript笔记全面涵盖了基础语法、面向对象编程以及DOM编程,这些都是学习JavaScript时至关重要的知识点。 首先,基础语法是JavaScript学习的基石。包括变量声明(var、let、const)、数据类型(如...
《JavaScript高级程序设计》是JavaScript编程领域的一本经典著作,由Nicholas C. Zakas撰写。这本书深入探讨了JavaScript的核心概念和技术,对于想要精通JavaScript的开发者来说,是一份宝贵的资源。源码版本更是...
总的来说,JavaScript的面向对象编程虽然与传统面向对象编程语言有所不同,但其基于原型的模型为我们提供了灵活而强大的方式来构建应用程序。通过理解原型和原型链的概念,我们可以更有效地使用JavaScript实现面向...
首先,标题《UML面向对象技术》期末复习吐血整理.pdf指明了文档的主题内容是关于统一建模语言(UML)和面向对象技术的期末复习资料,这是面向对象分析与设计的重要组成部分。UML是一种用于软件系统设计的标准化建模...
这份“JavaScript高级程序设计---笔记归类.pdf”文档显然详细整理了JavaScript的关键知识点,包括ECMAScript规范、DOM操作、数据类型、运算符、流程控制语句、函数以及面向对象编程等。 首先,ECMAScript是...
面向对象在JavaScript中表现为基于原型的继承。每个对象都有一个proto(或__proto__)属性,指向创建该对象的构造函数的prototype属性。通过原型链,子对象可以访问到父对象的所有属性和方法。ES6引入了类的概念,...
_filesjavascript如何避免内存泄露 - - JavaEye技术网站_filesprototype_js深入研究_files从 prototype_js 深入学习 javascript 的面向对象特性 - - AJAX - JavaEye论坛_files带参数的闭包函数的巧妙应用 - ...
首先,JavaScript是一种解释型的、面向对象的、动态类型的脚本语言。它主要应用于Web浏览器,但也可在服务器端(如Node.js)和其他环境运行。JavaScript的学习应从基础语法开始,包括变量声明、数据类型(如字符串、...
JavaScript支持面向对象编程(OOP),这使得开发者能够创建复杂的、结构化的代码。 #### 二、在HTML中嵌入JavaScript JavaScript可以通过以下三种方式嵌入到HTML页面中: 1. **内联式**:直接在HTML元素中使用`...
### JavaScript培训资料整理分享:JavaScript入门指南 #### 一、初识JavaScript ##### 1.1 网页三剑客 网页开发中通常提到的...了解这些基础知识后,你可以进一步探索更高级的主题,如面向对象编程、异步编程等。
了解如何创建对象(字面量方式、构造函数、工厂函数、类),以及原型和原型链的概念,这对于实现面向对象编程至关重要。此外,还需理解闭包和作用域,它们在内存管理、函数模块化以及异步编程中起到关键作用。 ...
7. 类和接口:ES6引入了类的概念,虽然JavaScript是动态类型语言,但可以模拟面向对象的类结构。 JavaScript库和框架: 1. jQuery:简化DOM操作,提供了丰富的API,降低了跨浏览器兼容性的难度。 2. React:...
接下来,`prototype`属性是JavaScript中面向对象编程的关键特性之一。每个构造函数(如Array)都有一个`prototype`属性,它允许我们为该构造函数创建的对象添加方法。例如,你可以扩展Number或Boolean等内置类型的...
JavaScript是一种解释型的、面向对象的、弱类型的脚本语言,主要应用于Web页面,用于增加交互性和动态功能。它由网景公司的Brendan Eich在1995年发明,起初被称为LiveScript,后来为了与Java保持一致,更名为...
此外,ES6引入了类的概念,使得JavaScript的面向对象编程更加直观。 事件和DOM(文档对象模型)处理是JavaScript与用户交互的关键。通过监听和触发事件,JavaScript可以响应用户的操作,改变网页状态。DOM是HTML和...