02 深入理解function&构造函数

作者: 陈柯梦 | 来源:发表于2019-01-08 00:15 被阅读0次

function&构造函数

演示代码

<html>
    <body>
        <script type="text/javascript">
        "use strict"
            // 通过构造函数 创建类(object)属性
            function fucConstruction(x){
                this.obj = x;
                console.log(`fucConstruction this.obj====>${this.obj}`);
            }
            fucConstruction.prototype.rootobj = "rootobj";
            var a = new fucConstruction('obj');
            console.log(`obj is a property====>${a.hasOwnProperty('obj')}`);
            console.log(`obj is fucConstruction property====>${fucConstruction.prototype.hasOwnProperty('obj')}`);
            console.log(`rootobj is a property====>${a.hasOwnProperty('rootobj')}`);
            console.log(`rootobj is fucConstruction property====>${fucConstruction.prototype.hasOwnProperty('rootobj')}`);
            console.log(`a is ====>${typeof a}`);

            // 函数受返回值影响
            function fucReturnObject(x){
                this.obj = x;
                console.log(`fucReturnObject this.obj====>${this.obj}`);
                return {};
            }
            var b = new fucReturnObject('obj');
            console.log(`obj is b property====>${b.hasOwnProperty('obj')}`);
            console.log(`obj is fucReturnObject property====>${fucReturnObject.prototype.hasOwnProperty('obj')}`);
            console.log(`b is ====>${typeof b}`);

            function fucReturnNull(x){
                this.obj = x;
                console.log(`fucReturnNull this.obj====>${this.obj}`);
                return null;
            }
            var c = new fucReturnNull('obj');
            console.log(`obj is c property====>${c.hasOwnProperty('obj')}`);
            console.log(`obj is fucReturnNull property====>${fucReturnNull.prototype.hasOwnProperty('obj')}`);
            console.log(`c is ====>${typeof c}`);

            function fucReturnFunc(x){
                this.obj = x;
                console.log(`fucReturnFunc this.obj====>${this.obj}`);
                return function(){};
            }
            var d = new fucReturnFunc('obj');
            console.log(`obj is d property====>${d.hasOwnProperty('obj')}`);
            console.log(`obj is fucReturnFunc property====>${fucReturnFunc.prototype.hasOwnProperty('obj')}`);
            console.log(`d is ====>${typeof d}`);

         </script>
    </body>
</html>

通过构造函数 创建类(object)属性

function fucConstruction(x){
    this.obj = x;
    console.log(`fucConstruction this.obj====>${this.obj}`);
}
fucConstruction.prototype.rootobj = "rootobj";
var a = new fucConstruction('obj');
console.log(`obj is a property====>${a.hasOwnProperty('obj')}`);
console.log(`obj is fucConstruction property====>${fucConstruction.prototype.hasOwnProperty('obj')}`);
console.log(`rootobj is a property====>${a.hasOwnProperty('rootobj')}`);
console.log(`rootobj is fucConstruction property====>${fucConstruction.prototype.hasOwnProperty('rootobj')}`);
console.log(`a is ====>${typeof a}`);

构造函数创建的属性属于新类的属性,不被函数原型继承

函数受返回值影响

function fucReturnObject(x){
    this.obj = x;
    console.log(`fucReturnObject this.obj====>${this.obj}`);
    return {};
}
var b = new fucReturnObject('obj');
console.log(`obj is b property====>${b.hasOwnProperty('obj')}`);
console.log(`obj is fucReturnObject property====>${fucReturnObject.prototype.hasOwnProperty('obj')}`);
console.log(`b is ====>${typeof b}`);
function fucReturnNull(x){
    this.obj = x;
    console.log(`fucReturnNull this.obj====>${this.obj}`);
    return null;
}
var c = new fucReturnNull('obj');
console.log(`obj is c property====>${c.hasOwnProperty('obj')}`);
console.log(`obj is fucReturnNull property====>${fucReturnNull.prototype.hasOwnProperty('obj')}`);
console.log(`c is ====>${typeof c}`);
function fucReturnFunc(x){
    this.obj = x;
    console.log(`fucReturnFunc this.obj====>${this.obj}`);
    return function(){};
}
var d = new fucReturnFunc('obj');
console.log(`obj is d property====>${d.hasOwnProperty('obj')}`);
console.log(`obj is fucReturnFunc property====>${fucReturnFunc.prototype.hasOwnProperty('obj')}`);
console.log(`d is ====>${typeof d}`);

函数构造受返回值影响,如果有返回值,则以return结果为准,即"无返回则返回函数构造对象,否则指针后移至新的返回对象"

相关文章

  • 04 深入理解ES6箭头函数this处理

    演示代码 这个例子是对JavaScript中this的深入理解,并对深入理解function&构造函数篇的补充,同...

  • 02 深入理解function&构造函数

    function&构造函数 演示代码 通过构造函数 创建类(object)属性 构造函数创建的属性属于新类的属性,...

  • 原型与原型链的理解

    深入理解原型 构造函数 创建一个函数,当我们new这个函数,哪个这个过程就叫做构造函数通过构造函数创建对象也称为实...

  • 2018-01-09 关于javascript原型链的思考 pl

    s 深入理解原型和原型链? 构造函数 理解原型和原型链 new的时候js都干了什么? 一个实现继承的demo 构造...

  • Object对象

    Object构造函数 01 使用Object构造函数创建字符串对象 02 使用Object构造函数创建数字对象 0...

  • CPP:02CPP的构造函数

    CPP02-CPP的构造函数

  • JavaScript深入理解构造函数

    今天我来说说什么是构造函数。在说构造函数之前,我们首先需要要知道JavaScript创建对象的方式有两种 对象字面...

  • 无标题文章

    类string的构造函数、拷贝构造函数和析构函数 引用http://www.cppblog.com/life02/...

  • javascript设计模式读书笔记一单例模式

    主要用的还是闭包的知识,以及重写构造函数,构造函数中返回值类型和引用类型的区别代码来自汤姆大叔的博客(深入理解Ja...

  • scala学习笔记-构造函数

    scala的构造函数分为主构造函数和辅助构造函数 【辅助构造函数】比较容易理解,它们同C++和Java的构造函数十...

网友评论

    本文标题:02 深入理解function&构造函数

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