JavaScript是弱类型,可变性强
/*JavaScript和其他的语言类似,也是面向对象,自然也就是存在类和对象(对象是类的实例化)*/
//1、JS对象
var empty = {}; //没有任何属性的对象
var point = { x: , y: }; //两个属性和值
var point2 = { x: point.x, y: point.y } //复杂的属性和值
var book = {
"main title": "javascript", //属性名字中有空格,必须用字符串表示
"sub-title": "The Definitive Guide", //属性名字里有连字符,必须用字符串表示
"for": "all audiences", //for是保留字,因此必须用引号
author: { //属性为对象类似其他语言
firstname: "David", //这个属性的值是一个对象,因此属性没有使用引号
surname: "Flanagan"
}
}; //2、通过new创建对象
var o = new Object(); //创建空对象,和{}一样
var a = new Array(); //创建一个空数组,和[]一样,这里的数组对象是JavaScript自带的对象
var d = new Date(); //创建时间对象
var p = new point(); //创建自己定义的对象 //3、属性的查询和设置(可以通过“.”和“[]”来获取属性值,前者右侧必须是属性名称,后者括号内必须是一个字符串表达式)
var author = book.author;
var name = author.surname;
var title = book["main title"]; book.edition = ; //给book创建一个名为“edition”的属性
book["main title"] = "ECMAScript"; //给“main title”重新赋属性值 //4、继承(JavaScript对象具有“自有属性”,也有些是从原型对象继承而来的,构成一条“链”)inherit()函数,通过给它传入指定原对象来创建实例
var o = {}; //或者var o=new Object();
o.x = ;
var p = inherit(o); //p继承o和object
p.y = ;
var q = inherit(p); //q继承o、p和object
q.z = ;
var s = q.toString(); //toString继承object
var result = q.x + q.y;
alert(result); //result为3 ,x和y继承o和p //注意:属性赋值,但是不会修改原型链,设置属性和继承无关
var circle = { r: }; //设置圆形半径r为1
var c = inherit(circle); //c继承r
c.x = ;
c.y = ;
c.r = ;
var l = circle.r;
alert(l); //l为1,原型对象属性没有修改
 //5、删除属性(delete运算符可以删除对象的属性,只能删除自有属性,不能删除继承属性)
delete book.author; //book不再有属性author
delete book["main title"]; //book也不再有属性“main title” var o = { x: };
delete o.x;
delete o.x; //此时返回true
delete o.toString; //返回true
delete ; //无意义,返回true delete Object.prototype; //不能删除,是不可配置的属性
var x = ;
delete this.x; //不能删除这个属性
function f() { }; //声明一个局部函数
delete this.f; //也不能删除 this.x = ; //创建一个可配置全局属性(没有用var)
delete x; //可以删除 delete x; //直接报错,不能直接这样操作
delete this.x; //正常运行 //6、检测属性
var o = { x: }; //创建一个对象
o.hasOwnProperty("x"); //true
o.hasOwnProperty("y"); //false
o.hasOwnProperty("toString"); //false继承属性 //7、对象的三个属性(原型属性、类属性、可扩展属性)
//原型属性
var p = { x: }; //定义一个原型对象
var o = Object.create(p); //使用这个原型创建一个对象
p.isPrototypeOf(o); //true o继承p
Object.prototype.isPrototypeOf(o); //true p继承object.prototype //类属性
function classof(o)
{
if (o === null) return "Null";
if (o===undefined) {
return "Undefined";
}
return Object.prototype.toString().call(o).slice(,-);
}
classof(null); //"Null"
classof(); //"Number"
classof([]); //"Array" //可扩展属性
var o = Object.seal(Object.create(Object.freeze({ x: }), { y: { value: , writable: true } })); //8、序列化对象
o = { x: , y: { z: [false, null, ""] } };
s = JSON.stringify(o);
p = JSON.parse(s); //9、对象方法
var s = { x: , y: }.toString();
var a = Array.toString();
var n = Number.toLocaleString();
var d = Date.toJSON();
var dd = Date.valueOf();

面向对象的JS(一)的更多相关文章

  1. 面向对象原生js幻灯片代淡出效果

    面向对象原生js幻灯片代淡出效果 下面是代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" & ...

  2. 面向对象的js编程 Call和apply方法

    JavaScript中有一个call和apply方法,其作用基本相同,但也有略微的区别. 一.方法定义 1.call 方法 语法:call([thisObj[,arg1[, arg2[, [,.arg ...

  3. 以纯面向对象的JS编写最基本的数据字典案例

    之前有讲到过数据字典,什么是数据字典,用来干啥的,这个不细说了,今天来说说如何实现数据字典功能 无非就是维护数据字典,对数据字典对象进行增删改成,曾经我写过一个页面跳转形式的,十分简单,不说了,今天用 ...

  4. 面向对象版js分页

    基于前一个js分页,我将代码改成一个面向对象版的js分页,代码如下 http://peng666.github.io/blogs/pageobj <!DOCTYPE html> <h ...

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

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

  6. 面向对象的JS随笔

    Scoping 全局与局部 全局变量可用在所有环境中,局部变量只可用在局部 js中连接变量至一个从未声明的变量,后面的变量自动提升成一个全局变量(不要这样用,不易阅读) 只有function(){中才 ...

  7. 对象(类)的封装方式(面向对象的js基本知识)

    上一个月一直忙于项目,没写过笔记,今天稍微空下来了一点 前几天在写项目的时候关于怎么去封装每一个组件的时候思考到几种方式,这里总结一下: 1.构造函数方式(类似java写类的方式):把所有的属性和方法 ...

  8. 面向对象的JS代码

    在下面的例子中可以找到强类型语言中所描述的类,属性,方法,对象. <script language="javascript" type="text/javascri ...

  9. 面向对象原生js轮播图

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. 【AR实验室】OpenGL ES绘制相机(OpenGL ES 1.0版本)

    0x00 - 前言 之前做一些移动端的AR应用以及目前看到的一些AR应用,基本上都是这样一个套路:手机背景显示现实场景,然后在该背景上进行图形学绘制.至于图形学绘制时,相机外参的解算使用的是V-SLA ...

  2. Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)

    本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...

  3. 你知道C#中的Lambda表达式的演化过程吗?

    那得从很久很久以前说起了,记得那个时候... 懵懂的记得从前有个叫委托的东西是那么的高深难懂. 委托的使用 例一: 什么是委托? 个人理解:用来传递方法的类型.(用来传递数字的类型有int.float ...

  4. .NET基础拾遗(5)多线程开发基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...

  5. webpack+react+redux+es6开发模式

    一.预备知识 node, npm, react, redux, es6, webpack 二.学习资源 ECMAScript 6入门 React和Redux的连接react-redux Redux 入 ...

  6. AJAX 大全

    本章内容: 简介 伪 AJAX 原生 AJAX XmlHttpRequest 的属性.方法.跨浏览器支持 jQuery AJAX 常用方法 跨域 AJAX JsonP CORS 简单请求.复制请求.请 ...

  7. [Nginx笔记]关于线上环境CLOSE_WAIT和TIME_WAIT过高

    运维的同学和Team里面的一个同学分别遇到过Nginx在线上环境使用中会遇到TIME_WAIT过高或者CLOSE_WAIT过高的状态 先从原因分析一下为什么,问题就迎刃而解了. 首先是TIME_WAI ...

  8. duang~免费的学习视频来啦:学霸君之全栈测试

    学霸君向童鞋们推荐一款 同名学霸学习 视频教程 重点是完全免费收看学习噢!!! 今天 学霸君推荐腾讯课堂的学霸君之全栈测试 复制下方链接至腾讯课堂中报名学习 https://ke.qq.com/cou ...

  9. 搭建QQ聊天通信的程序:(1)基于 networkcomms.net 创建一个WPF聊天客户端服务器应用程序 (1)

    搭建QQ聊天通信的程序:(1)基于 networkcomms.net 创建一个WPF聊天客户端服务器应用程序 原文地址(英文):http://www.networkcomms.net/creating ...

  10. Android 微信第三方登录(个人笔记)

    今天在写微信登录,花了半天时间搞定.然后写下自己的笔记,希望帮助更多的人...欢迎各位指教. 微信授权登录,官方说的不是很清楚.所以导致有一部分的坑. 微信注册应用平台的应用签名,下载 微信签名生成工 ...