这几天一直在学习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面向对象核心知识与概念,整理总结了JavaScript面向对象程序设计中基本概念、原理与操作注意事项,需要的朋友可以参考下
韩顺平老师的javascript笔记 包括基础语法 javascript面向对象编程 dom编程
暂时放弃js框架吧开始写javascript的时候都是自己写,后来发现了prototype.js框架,发现很好用,就一直用的,他的对象创建方法被修改了,但很好用,再后来又转用jquery框架,受此框架影响,也不用自己创建类了,渐渐...
本文实例讲述了JavaScript面向对象中接口实现方法。分享给大家供大家参考,具体如下: 接口是面向对象编程的基础,它是一组包含了函数型方法的数据结构,与类一样,都是编程语言中比较抽象的概念。比如生活中的接口...
本文实例讲述了javascript面向对象三大特征之继承。分享给大家供大家参考,具体如下: 继承 在JavaScript中的继承的实质就是子代可以拥有父代公开的一些属性和方法,在js编程时,我们一般将相同的属性放到父类中,...
JavaScript的面向对象编程和大多数其他语言如Java、C#的面向对象编程都不太一样。下面通过本文给大家介绍js面向对象知识,包括面向对象的两个基本概念,一起看看吧
主要介绍了javascript中的面向对象编程知识点,对面向对象编程进行概述,以及各种方法进行整理,感兴趣的小伙伴们可以参考一下
_filesjavascript如何避免内存泄露 - - JavaEye技术网站_filesprototype_js深入研究_files从 prototype_js 深入学习 javascript 的面向对象特性 - - AJAX - JavaEye论坛_files带参数的闭包函数的巧妙应用 - ...
18.面向对象编程之ECMAScript实现 19.求值策略 20.《你真懂JavaScript吗?》答案详解 21.S.O.L.I.D五大原则之接口隔离原则ISP 22.S.O.L.I.D五大原则之依赖倒置原则DIP 23.JavaScript与DOM(上)——也适用于新手 24....
在自己学习的过程中一直听到身边的人说面向过程编程和面向对象编程,而函数式就非常少。为了自己不要落后于其他同学的脚步,故想以写笔记的方式去分享和记录自己阅读中所汲取的知识。 js 和函数式编程 书中用了一句...
java面向对象编程(基础) java图开界面开发 java数据库编程 java文件io流编程 java网络编程 java多线程编程 java ee基础1 java面向对象编程--数据库编程-->java se java 基础2 html--css--javascript-->div+css ...
2.面向对象编程 关于面向对象和面向过程,个人觉得这两者不是绝对独立的,而是相互相成的关系。至于什么时候用面向对象,什么时候用面向过程,具体情况,具体分析。 针对于面向对象编程的。知乎上有一个高赞回答...
TypeScript 是一种由微软开发的自由和开源的编程语言。它是 JavaScript 的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。
自己精心整理的入门基础代码包括:java,html...java包括java语法,java面向对象,io流,多线程,泛型集合,异常处理,字符串处理,网络编程,常用类等 html+javascript特效 c&c++基础语法 sql基础加高级 包括多个小型项目源代码
面向对象编程 推荐使用 VSCode 来编写 Typescript,因为它有非常好的对 Typescript 的支持,包括语法纠错、类型判断和片段提示等。 Typescript 在不断的发展,本系列所介绍的内容为当前(2021.03)官方推荐的内容...
最早是在HTML上使用的,用来给HTML网页添加动态功能,由Netscape的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题及...
Python 是一种支持面向对象的解释性高级语言,Simple yet Powerful 是人们对它的 一致评价。最初是在苹果计算机上被编译成功的,但现在他已经可以运行于世界上主流的 操作平台之上了。跨平台性极强。它包含多种 ...
下面我就将自己学习的用面向对象的思想对cookie进行处理的学习笔记整理一下,以飨读者。 cookie的常见操作分析: (1)设置cookie 包括了添加和修改功能,事实上如果原有cookie 名称已经存在,那么添加此cookie 就...
JavaScript面向对象及原型 Dom选择器以及内容文本操作 Dom样式操作 Dom属性及创建标签 Dom提交表单及其他 Dom事件操作 Dom事件操作补充 Dom绑定时间的另外一种方式 JavaScript 词法分析解析 前端学习方法分享 ...
多灯定位matlab仿真代码所有Stackoverflow标签列表 print ...Java(不要与javascript,jscript或js混淆)是一种通用的,静态类型的,面向对象的编程语言,旨在与Java虚拟机结合使用... 3 .:由Microsof