JavaScript笔记(1)

来源:互联网 发布:淘宝赚佣金的软件 编辑:程序博客网 时间:2024/05/22 20:28

昨天,学了一些关于JS的东西,现在就来谈谈我的感想以及收获。

1.JS的特性

一看到JS的全名javascript,我就不由自主的把它与之前学过的一门语言Java作比较,但事实证明,他俩除了名字上都有java,其他地方根本一点相似之处都没有,
javascript是一个脚本语言,没有自己的环境,而java是一门编程语言,有自己的编译环境,javascript嵌入在html语言中,为它增加了互动和交互。

2.JS的面向对象

这些天看的主要内容全在这,上文也说过,java和js除了名字相似其他并没有什么相似之处,面向对象时也是如此:
(1)封装
Javascript是一种基于对象的语言,你遇到的所有东西几乎都是对象。但是,它又不是一种真正的面向对象编程语言,因为它的语法中没有class;所以利用了function代替class(我是这么认为的),下面看一段代码:

  function x(name) {            var name = "you";            this._name=name;        }        x.prototype.say=function () {            document.write("I've got "+this._name+" in my sight</br>");        }        var p=new x();        p.say();

这是js中最简单的一种封装,一目了然,只要利用function创建一个类(暂且说类)再利用prototype为其赋上相应的方法,之后只要实例化对象即可使用。但其缺点也很明显:无法保证内部成员的安全性,任何在此js文件中的代码皆可访问到该函数本应该是私有的成员,于是,就有了下面这段代码:

(function(){            //这里类似于java中的private    var name = "you";    function x(name) {        this._name=name;}x.prototype.say=function () {        document.write("I've got "+this._name+" in my sight</br>");}window.x=x;             //创建一个对外的接口}());

这样由于name是匿名函数的成员,于是它便成为了不可访问元素,这样通过外加一个匿名函数的形式很好的保证了数据的安全性。

3.JS中的继承

先来看一段代码

(function () {    function y(name) {        this._name=name;    }    y.prototype=new x();       //这里继承    var supersay=y.prototype.say;           y.prototype.say=function () {        supersay.call(this);        document.write("No "+this._name+" can hide from my sight</br>");    }    window.y=y;}());

类y通过prototype说明了y是由x继承而来的,是x的子类,但同时,y也可以通过call(this)函数调用父类的方法。

//经验值+10 获得JS小菜鸡称号

0 0
原创粉丝点击