JS面向对象的基础:

1.用定义函数的方式定义类

2.用new操作符获得一个类的实例

3.使用 [ ] 引用对象的属性和方法

4.动态添加,修改,删除对象的属性和方法

5.使用 { } 语法创建无类型的对象

6.prototype原型对象

1.函数的方式定义类

function class1 () {.......}

**class1既是一个函数也是一个类,可以将它理解为类的构造函数,负责初始化工作。

2.new 操作符获得一个类的实例

**JS中,函数和类是一个概念,当对一个函数进行new操作时,就会返回一个对象。如果这个函数中没有初始化类成员,那就会返回一个空的对象

       function Hello(){
alert('hello');
}; var obj = new Hello();//这里执行了alert('hello'); 把Hello当作是一个构造函数。
alert(typeof(obj));//打印出obj变量是一个object。

3.使用 [] 引用对象的属性和方法

**在JS中,每个对象可以看作是多个属性(方法)的集合,引用一个属性(方法),如下:

  对象名.属性(方法)名

  对象名["属性(方法)名"]

       var arr = new Array();

            arr.push('111');
arr['push']('333'); var len =arr.length;
var len =arr['length'];
alert(len);

**这种引用属性(方法)的方式和数组类似,体现了JS对象就是一组属性(方法)的集合这个性质。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript" src="js/0318.js" ></script>
<script> function User(){
this.age=21;
this.sex='male';
} var user = new User();
function show(slt){
if(slt.selectedIndex!=0){
alert(user[slt.value]);
}
} </script> </head>
<body> <select onchange="show(this)">
<option value="0">请选择信息</option>
<option value="age">年龄</option>
<option value="sex">性别</option>
</select> </body>
</html>

**eval函数!!

**eval() 函数计算 JavaScript 字符串,并把它作为脚本代码来执行。

**如果参数是一个表达式,eval() 函数将执行表达式。如果参数是Javascript语句,eval()将执行 Javascript 语句。

<script>
eval("x=10;y=20;document.write(x*y)");
document.write("<br>" + eval("2+2"));
document.write("<br>" + eval(x+17));
</script>

输出:200  4  27

4.动态添加,修改,删除对象的属性和方法

**JS提供了灵活的机制来修改对象的行为,可以动态添加,修改,删除属性和方法。

            var user =new Object();
user.id=1;//动态生成id属性
user.name='zhang';//动态生成name属性 alert(user.name);//访问东西生成的name属性 user.show=function(){//动态添加方法
alert('ok');
}
user.show();//

**动态生成的方法,可以如下:

       function Myshow(arg01){//声明一个函数
alert('ok'+arg01);
} var user =new Object();
user.id=1;//动态生成id属性
user.name='zhang';//动态生成name属性 user.show =Myshow;//将Myshow方法的指针指向user.show
user.show(' qq');

**注意:undefined和null的区别

**调试:console.log(obj);

**修改就是重新赋值,谁在后把之前的覆盖!

**JS里面不存在重载!

**动态删除:

       function Myshow(arg01){//声明一个函数
alert('ok'+arg01);
} var user =new Object();
user.id=1;//动态生成id属性
user.name='zhang';//动态生成name属性 user.show =Myshow;//将Myshow方法的指针指向user.show
user.show(' qq'); //动态删除
user.id=undefined;
user.name=undefined;
delete user.show; alert(user.id);//undefined
user.show('zq');//没有打印出来,没有该方法了

**标准标签,可以动态添加额外的属性,不过要注意到浏览器的兼容性!!

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title> <script> function TestTT(){ var obj = document.getElementById('btn');//获取btn对象
obj.tab='ZQ';//给该对象添加一个tab的属性,但是input标准标签并没有这个属性的!动态添加后是可以访问的 alert(obj.tab);
alert(obj.value);
} </script> </head>
<body> <input id="btn" type="text" value="123" />
<button onclick="TestTT()" >TT</button> </body>
</html>

5.使用 { } 大括号语法创建无类型对象 --(更原生的语法,用处较多)

**JS中的对象其实就是属性(方法)的一个集合,并没严格意义上的类的概念。所以可以使用 { } 直接声明一个对象,而不是类。

       var arr= new Array();
var arr=[]; var obj = new Object();
var obj ={}; //大括号创建的是对象不是类
var user ={
name:'zq',
age:12
}; //alert(user.age);
//var user1= new User();//js会报错
//alert(user1.age); function User(){ };
var user_1 = new User(); user_1=
{
name:'zq',
age:12
};
alert(user_1.name);

6.prototype原型对象

**prototype对象是实现面向对象的一个重要机制。每个函数(function)其实也是一个对象,它们对应的类是‘Function’,但它们的身份特殊,每个函数对象都具有一个子对象prototype。

**即prototype表示了该函数的原型,而函数也是类,prototype就是表示了一个类的成员的集合。当通过 new 来获取一个类的对象时,prototype对象的成员都会成为实例化对象的成员。

**这里可以理解为C#的静态成员,并且可以动态声明!

       function User(){
this.name='zq';
this.age=12;
}; User.prototype.show=function(){//给这个类的原型添加了一个show方法
alert('User Show!!!');
}; var user1=new User();
user1.name='qq';
//alert(user1.name);
user1.show(); var user2=new User();
//alert(user2.name);
user2.show();

JS OOP -01 面向对象的基础的更多相关文章

  1. JavaScript面向对象(一)——JS OOP基础与JS 中This指向详解

      前  言 JRedu 学过程序语言的都知道,我们的程序语言进化是从"面向机器".到"面向过程".再到"面向对象"一步步的发展而来.类似于 ...

  2. # 095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 03 封装总结 01 封装知识点总结

    095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  3. 094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 04 static关键字(续)

    094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  4. 093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 03 static关键字(下)

    093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  5. 092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 02 static关键字(中)

    092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  6. 091 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 01 static关键字(上)

    091 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  7. 090 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 04 使用包进行类管理(2)——导入包

    090 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  8. 089 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 使用包进行类管理(1)——创建包

    089 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  9. 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现

    088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现 本文知识点:Java封装的代码实现 说明:因为时间紧张,本人写博客过程中只 ...

随机推荐

  1. 《你不知道的JavaScript(上)》笔记——this全面解析

    首先要理解调用位置: 调用位置就是函数在代码中被调用的位置(而不是声明的位置). 最重要的是要分析调用栈(就是为了到达当前执行位置所调用的所有函数). 我们关心的调用位置就在当前正在执行的函数的前一个 ...

  2. Swift_IOS之提示框UIAlertController

    import UIKit class ViewController: UIViewController ,UIActionSheetDelegate{ @IBAction func btn1(_ se ...

  3. 微软代码示例:ASP.NET 2.0 三层架构应用程序教程系列

    本文转自:http://www.codeusing.com/hi/uephee.wen/resource/view/170.aspx 资源分类:微软代码示例               更新日期:20 ...

  4. SortedMap和TreeMap有什么区别?

    SortedMap和TreeMap有什么区别   答: TreeMap的类的源码: public class TreeMap<K,V> extends AbstractMap<K,V ...

  5. win7电脑删除保存的凭据

    win7电脑删除保存的凭据: 控制面板-> 用户账户 -> 管理您的凭据

  6. winform软件版本检测自动升级开发流程(转)

    注:按此博文试验OK 基于C/S的开发有开发效率高,对于业务逻辑复杂,且不需要外网使用具有较大优势,但是弊端也不可忽视,就是升级麻烦,不可能每写一个版本就要拿着安装包给每个人去替换,这样不仅搞得自己很 ...

  7. Python检查数组元素是否存在类似PHPisset()方法

    Python检查数组元素是否存在类似PHP isset()方法 sset方法来检查数组元素是否存在,在Python中无对应函数,在Python中一般可以通过异常来处理数组元素不存在的情况,而无须事先检 ...

  8. Delphi 中记录类型 给记录指针赋值

    PPersion=^TPersion; TPersion=packed record Name:string; Sex:string; Clasee:string; end; var persion: ...

  9. Mac 高效 软件

    彻底卸载软件: cleanmymac 软件转移: AppDelete,选择一个软件归档,换台电脑从归档安装 finder类chrme标签页: XtraFinder

  10. 【Leetcode_easy】628. Maximum Product of Three Numbers

    problem 628. Maximum Product of Three Numbers 题意:三个数乘积的最大值: solution1: 如果全是负数,三个负数相乘还是负数,为了让负数最大,那么其 ...