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. linux内核睡眠状态解析

    1. 系统睡眠状态 睡眠状态是整个系统的全局低功耗状态,在这种状态下,用户空间的代码不能被执行并且整个系统的活动明显被降低 1.1 被支持的睡眠状态 取决于所运行平台的能力和配置选项,Linux内核能 ...

  2. 跨平台免费极简的markdown工具

    1. 工具名 typora 2. 工具官网 https://www.typora.io

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

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

  4. javascript已存在的对象构造器中是不能添加新的属性的:

    <!DOCTYPE html><html><head><meta charset="utf-8"><title>菜鸟教程 ...

  5. 28 Flutter 轮播图 flutter_swiper

    中文地址: https://github.com/best-flutter/flutter_swiper/blob/master/README-ZH.md 基本参数 参数 默认值 描述 scrollD ...

  6. Flask 应用如何部署

    1. Why Flask+Gunicorn+Nginx Flask+Gunicorn+Nginx是最常用的Flask部署方案,大家深究过为何用这样的搭配么? 1.1 Why? Flask 是一个web ...

  7. ElasticSearch——数据建模最佳实践

    如何建模 mapping 设计非常重要,需要从两个维度进行考虑: 功能:搜索.排序.聚合 性能:存储的开锁.内存的开销.搜索的性能 mapping 注意事项: 加入新字段很容易(必要时需要 updat ...

  8. MySQL函数使用

    1.mysql开启函数功能 MySQL函数不能创建的解决方法 在使用MySQL数据库时,有时会遇到mysql函数不能创建的情况. 出错信息大致类似: ERROR 1418 (HY000): This ...

  9. Linux 教程学习笔记

    目录 一.Linux 系统启动过程 1.分为 5 个阶段 3.shell.操作系统.内核的关系 二.Linux 系统目录结构 三.Linux 文件基本属性 1.Linux文件属性 3.更改文件属性: ...

  10. go os.State类用法

    参考文章: https://blog.csdn.net/weixin_43851310/article/details/87988648