美文网首页
JS一些基础小知识

JS一些基础小知识

作者: zhchhhemmm | 来源:发表于2019-03-10 11:17 被阅读0次
函数表达式

函数声明:
function a(){ ... }
函数表达式:
var a = function() {...}
区别:函数声明可以先使用,再定义
函数表达式只能先定义,再使用。

构造函数模式
function Person(name,age){
  this.name = name;
  this.age = age;
  this.sayName = function(){
    console.log(this.name);
}
}

实例化:var person = new Person('sb',18);
使用:person.sayName();//sb
构造函数命名时应该用首字母大写;
构造函数模式里的this指向的是实例化后的对象,即:指向的是person而不是Person
构造函数一般不使用return,一旦使用,有可能会改变他的返回值类型
构造函数用new来调用,普通函数不用
构造函数存在得问题有:
性能不好,当我们需要一万个对象,那就得New一万次,而且,用这种方法构造的不同实例上的同名函数是不相等的。

工厂模式
function Person(name,age){
                            var obj = new Object();
                            obj.name = name;
                            obj.age = age;
                            obj.sayName = function(){
                                   return obj.name
                            };
                            return obj;
                     }
                     var a1 = Person('he',9);
                     console.log(a1.sayName());
深拷贝和浅拷贝

深拷贝:
JSON.stringify和JSON.parse属于深拷贝,前后是相互独立的
浅拷贝:
即引用,前后是有关联的,一个地方的变化会导致另一处也发生改变。

原型

函数有prototype原型属性。指向对象。
用function定义的对象有prototype属性,但是用new生成的对象没有这个属性!,不过New生成的对象有一个内置的原型对象,在new时就被设置为了构造函数的prototype属性引用的那个原型对象。
prototype属性又指向了一个prototype对象,注意prototype属性与prototype对象是两个不同的东西,要注意区别。在prototype对象中又有一个constructor属性,这个constructor属性同样指向一个constructor对象,而这个constructor对象恰恰就是这个function函数本身。

JS 使用new 生成新对象的步骤:

1.第一步是建立一个新对象(叫A吧);
2.第二步将该对象(A)内置的原型对象设置为构造函数(就是Person)prototype 属性引用的那个原型对象;
3.第三步就是将该对象(A)作为this 参数调用构造函数(就是Person),完成成员设置等初始化工作。

其中第二步中出现了一个新名词就是内置的原型对象,注意这个新名词跟prototype对象不是一回事,为了区别我叫它inobj,inobj就指向了函数Person的prototype对象。在person的prototype对象中出现的任何属性或者函数都可以在one对象中直接使用,这个就是javascript中的原型继承了。

JS的继承

            function A(){
                this.name = 'hello'
            }
            A.prototype.action = function() {
                // body...
                console.log("吃饭,睡觉,打豆豆");
            };
            function B(){}
            B.prototype = new A();
            let Aa = new A();
            let Bb = new B();
            Aa.action();
            Bb.action();
            console.log(Bb.name)

把A给B的prototype,B就继承了A的方法。

传参
        function Person(name,age) {
            this.name = name;
            this.age = age;
        }
        Person.prototype.getName = function () {
            return this.name;
        }
        function Son() {
            Person.call(this,'hacuocuo',17); //子类调用父类,并且进行传参
            this.name = 'sons'
        }
        Son.prototype = new Person();
        Son.prototype.getSonName = function () {
            return this.name;
        }
        var aa = new Son();

此时aa的name为sons,age为17;
age是传参生成的,name是实例里写的,而不是参数

作用域

可以理解为变量起作用的区域

AJAX

几种请求类型:

get:改
post:增
put:编辑
delete:删

如何让a标签不跳转

<a href="javascript:;"></a>

相关文章

  • JS一些基础小知识

    函数表达式 函数声明:function a(){ ... }函数表达式:var a = function() {....

  • 无标题文章

    [toc] ##1、基础知识>ECMAScript(ES):规定了JS的一些基础核心的知识(变量、数据类型、语法规...

  • React-Native 随笔

    学习基础: js的基础知识, rect.js基础 JSX语法基础 FlexBox布局 安装 安装node.js下载...

  • 前端JS基础六(DOM)

    前面我写了JS基础知识,接下来要开始写JS-WEB-API JS基础知识:ECMA 262标准 JS-WEB-AP...

  • javascript基础面试题

    第一章 课程简介 第二章 JS基础知识(上) 第三章 JS基础知识(中) 第四章JS基础知识(下) 第五章 JS-...

  • iOS中WKWebView和Native交互

    前言 了解本文之前需要准备JS和WebView的一些基础知识,需要知道JS的基本语法和WebView调用JS的常用...

  • 5-1 从基础知识到JSWebAPI

    回顾js基础知识 JS-web-API 总结 回顾js基础知识 变量类型和计算 原型和原型链 闭包与作用域 异步和...

  • 一些js小知识

    一、数组去重 ES6写法:1、set 、Array.from 2、...(拓展运算符) + set ES5写法: ...

  • Canvas基础教程(1)-最简单的canvas程序

    为了更好的学习canvas知识,你需要了解一些基本的HTML,js等基础知识。本节知识是利用canvas画布在浏览...

  • 前端 JavaScript基础知识梳理

    前言 javascript内容较多,知识点较杂。我整理了一些js基础的知识点(只是知识点的名称,内容不做详解),希...

网友评论

      本文标题:JS一些基础小知识

      本文链接:https://www.haomeiwen.com/subject/gnfupqtx.html