JavaScriptOOP
| 1. OOP基础 |
1.1面向对象编程OOP
1.2类和对象
function Person(name,age){
this.name=name;
this.age=age;
this.say=function(content){
// 在类中,访问类自身的属性,必须使用this.属性 调用
alert("我叫"+this.name+",今年"+this.age+"岁。我说了一句话:"+content);
}
}
var zhangsan = new Person("张三",18);
var obj = new 类名(属性1的具体值);
var s="123"; // 不是对象
s.name="aaa";
console.log(typeof s); // String
console.log(s.name); // Undefined 字面量声明的字符串不是对象,不能添加属性。
| 2. 成员属性、静态属性和私有属性 |
2.1成员属性与成员方法
var zhangsan = new Person("张三");
zhangsan.age = 14; // 追加成员属性
console.log(zhangsan.age); // 调用成员属性
2.2静态属性与静态方法
Person.count = "60亿"; // 声明静态属性
console.log(Person.count); // 调用静态属性
var lisi = new Person("李四");
console.log(lisi.count); // Undefined 静态属性是属于类的,只能用类名调用
2.3私有属性与私有方法
function Person(){
var num = 1; // 私有属性
function func(){}; // 私有方法
}
私有属性和私有方法的作用域,只在构造函数内部有效。即,只能在构造函数内部使用,无论使用对象名还是类名都无法调用。
| 3. JS模拟实现封装 |
function Person(){
var age=0;
this.setAge=function(ages){
age=ages;
}
this.getAge=function(){
return age;
}
}
| 4. JS中的this指向详解 |
4.1谁最终调用函数,this就指向谁
4.2this指向的规律!!!(与函数的调用方式息息相关)
func();
obj.func(); // 狭义对象
document.getElementById("div1").onclick = func; // 广义对象
var arr = [1,2,3,func,4,5,6];
arr[3]();
setTimeout(func,1000);
var obj1 = new func();
| 5. 原型与原型链 |
5.1__proto__与prototype
5.2原型链的指向问题
| 6. 原型属性与原型方法 |
function Person(){
this.name = "张三"; // 成员属性
}
Person.prototype.say = function(){};
/**
* 给数组添加一个遍历打印所有值的方法
*/
Array.prototype.eachAll = function(){
for (var i=0;i<this.length;i++) {
console.log(this[i]);
}
}
var arr = [1,2,3,4,5,6,7];
arr.eachAll();
| 7. for-in循环 |
function Person(){
this.name = "张三";
this.age = 14;
this.func1 = function(){
}
}
Person.prototype.name1 = "zhangsan";
Person.prototype.age1 = 15;
Person.prototype.func2 = function(){};
var zhangsan = new Person();
for(keys in zhangsan) {
if (zhangsan.hasOwnProperty(keys)) {
console.log(zhangsan[keys]);
}
}
| 8. 继承 |
8.1扩展Object实现继承
function Parent(){}
function Son(){}
Object.prototype.extend = function(parent){
for(var i in parent){
this[i]=parent[i];
}
}
var p = new Parent();
var s = new Son();
s.extend(p);
8.2使用原型实现继承
function Parent(){}
function Son(){}
Son.prototype = new Parent();
var s = new Son();
8.3call/apply/bind实现继承
function Parent(name){}
function Son(no,name){
this.no = no;
Parent.call(this,name);
}
var s = new Son(12,"张三");
| 9. 闭包 |
function func1(){
var num = 1;
function func2(){
return num;
}
return func2;
}
var num = func1()();
JavaScriptOOP的更多相关文章
- 初识JavaScriptOOP(js面向对象)
初识JavaScriptOOP(js面向对象) Javascript是一种基于对象(object-based)的语言, 你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程(OOP)语言 ...
- 详解面向对象编程——JavaScriptOOP
前 言 絮叨絮叨 学习了JS之后,不知道大家觉得怎们样呢? 今天我们就来讲一下JS中最重要的一个环节,JavaScript中的面向对象编程OOP,这里的东西有点难,也有点绕. 可是! 不要灰 ...
- javascript-OOP基础详解
前 言 S N 今天给大家详解一下面向对象编程(简称OOP)基础,OOP 语言使我们有能力定义自己的对象和变量类型 .对象拥有属性和方法 . 所以今天就给大家详解对象和类 . 1-1简介 ...
- 【JavaScript OPP基础】---新手必备
今天和大家分享一下近期整理的有关JavaScriptOPP的基础知识~~~我们一起来学习一下-- JavaScriptOPP基础 一.面向对象编程OOP1.语言的分类:面向机器:汇编语言面向过程:C语 ...
- JavaScript模块化演变 CommonJs,AMD, CMD, UMD(一)
原文链接:https://www.jianshu.com/p/33d53cce8237 原文系列2链接:https://www.jianshu.com/p/ad427d8879cb 前端完全手册: h ...
随机推荐
- idea 给maven项目添加依赖(二)
这里接着上一篇来 我们观察目录发现有两个pom.xml(project object module) 项目是里面的,所以外面的先不管它. 点击里面的pom.xml 1.在<url>节点下面 ...
- 关于js中单双引号以及转义符的理解
关于js中单引号(')和双引号(")的使用以及转义的理解 这几天一直在画页面,身为开发人员的我之所以要画页面是因为当前项目中的页面上所有的东西都是从数据库中取得的,也就是动态的,类似于我们设 ...
- 图论中DFS与BFS的区别、用法、详解?
DFS与BFS的区别.用法.详解? 写在最前的三点: 1.所谓图的遍历就是按照某种次序访问图的每一顶点一次仅且一次. 2.实现bfs和dfs都需要解决的一个问题就是如何存储图.一般有两种方法:邻接矩阵 ...
- 转:【Java并发编程】之四:守护线程与线程阻塞的四种情况
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17099981 守护线程 Java中有两类线程:User Thread(用户线 ...
- 团队作业4——第一次项目冲刺(Alpha版本) Day1
1.开站立式会议: 2.Leangoo任务分解图: 3.开会讨论的结果,任务分派 队员 今日进展 明日安排 林燕 调查产品的市场需求,学习微信开发 完善逻辑架构框架 王李焕 结合实际分析系统设计思路, ...
- 201521123072《java程序设计》第八周总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 List中指定元素的删除(题目4-1) 1.1 实验总结 在删除List中的元素中要考虑元素删 ...
- 201521123053《Java课程设计》第七周学习总结
1. 本章学习总结 2. 书面作业 Q1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 答:代码如下 public boolean contains(Objec ...
- 学号:201521123116 《java程序设计》第六周学习总结
1. 本章学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 2.书面作业 1.1.Object对象中的clone方法是 ...
- 201521123052《Java程序设计》第4周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 类型转换与强制类型转换(cast) 多态:同一操作作用于不同的对象,可以有不同的解释,产生不 ...
- 201521123004 《Java程序设计》第 14 周学习总结
0. 本周课程设计发布 Java课程设计 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 1.思维导图如下: 2.补充: 数据库 为了实现一定目的按某种规则组织 ...