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. SQLite3中的日期时间函数使用小结

    代码如下: import sqlite3conn = sqlite3.connect('/tmp/sqlite.db')cur = conn.cursor() 接下来干嘛呢?建一张表吧.这里需要注意的 ...

  2. 上传图片获取base64编码、本地预览

    一.读取文件的对象 — new FileReader()   上传图片接口参数有图片base64编码(数组, imgBase64List ),主要用到 读取文件的对象 [ new FileReader ...

  3. vue官网笔记

    学习了vue后又重新过了一遍官网的教程,选择性地摘抄了一些自己觉得比较重要的知识点.以备后面查缺补漏用. 计算属性 计算属性mounted中,属性值函数将用作属性的getter函数.当函数中的依赖发生 ...

  4. centos上安装Python并修复yum

    date: 2019-07-01  18:09:53 author: headsen chen notice: 个人原创 1,安装python3.7: yum install zlib-devel b ...

  5. angular 中*ngIf 和*ngSwitch判断语句

    <div style="text-align:center"> <h1> Welcome to {{ title }}! </h1> <p ...

  6. Delphi ADOQuery的速度优化

    今天终于把纠缠了几天的问题改完了,说到底只是一个很小的问题,就是ADOQuery的一个小属性. 把控件DBGridEh的一列的checkbox设为true,将其绑定DataSource和ADOQuer ...

  7. Python中列表,元组,字典,集合的区别

    参考文档https://blog.csdn.net/Yeoman92/article/details/56289287 理解Python中列表,元组,字典,集合的区别 列表,元组,字典,集合的区别是p ...

  8. DOS与cmd(windows)

    dos是计算机的最初期的操作系统,对电脑操作必须输入各种dos命令窗口,可以理解成运行计算机机器内部语言,知道编程吗?其实早期dos命令操作系统就是运行计算机内部的编程命令,因此操作人员都必须具有一定 ...

  9. iOS-UIAlertView与UIActionSheet

    UIAlertView与UIActionSheet 6.11.1 常规调用 UIAlertView:调出一个模态对话框,屏幕居中显示 UIActionSheet:非模态对话框,屏幕下方弹出 Alert ...

  10. sqlserver 数据库操作导出数据sql工具

    软件名称sqldbx 下载URL  https://download.csdn.net/download/yanghl1998/7832861 Navicat Premium  这个工具任何类型数据库 ...