Interested in a ServiceNow event built for developers? Registration for now[dev]26 is officially open!

Pranav Bhagat
Kilo Sage
Hi Everyone! In this video I will cover how to extend a script include from another script include Topics Covered 1.Extending Script Includes 2.Using method of Parent Script Include in child Script. 3.Overriding method of Parent Script Include in child Script. 4.Effect of "this" keyword when calling Parent method from Child Script Include. Background Script Code and Script Includes code in comments
3 Comments
Pranav Bhagat
Kilo Sage

Background Scripts

 

/*

Script includes help centralize the redundant piece of code in one single place and reuse it. In short it is a library of functions.

*/


gs.print('1.Extending Script Includes');
gs.print('2.Using method of Parent Script Include in child Script.');
gs.print('3.Overriding method of Parent Script Include in child Script.');
gs.print('4.Effect of "this" keyword when calling Parent method from Child Script Include.');

gs.print('******************************************************************************************');


var clc = new Calculator();
var clc2 = new Calculator2();

gs.print('Result OF ADD from SI>1  ' +clc.add(5,3));

gs.print('Result OF DIV from SI>2  ' +clc2.div(10,2));

gs.print('Result OF ADD from SI>2  ' +clc2.add(5,3));



gs.print('Result OF MUL from SI>1  ' +clc.mul(10));

gs.print('Result OF MUL from SI>2  ' +clc2.mul(10));

 

Calculator

 

var Calculator = Class.create();
Calculator.prototype = {
	initialize: function() {

		this.num = 10;
	},

	add:function(n1,n2){

		return n1 + n2;
	},

	sub:function(n1,n2){

		return n1 - n2;
	},

	mul:function(n1){
		return n1*this.num;
	},

	type: 'Calculator'
};

 

Calculator 2

 

var Calculator2 = Class.create();
Calculator2.prototype = Object.extendsObject(Calculator,{
	initialize: function() {
		//this.num = 5;
	},

	div:function(n1,n2){
		return n1/n2;
	},
	
	add:function(n1,n2){
		return n1 + n2 + 10 ;
	},

	type: 'Calculator2'
});
Jayaragavan
Giga Contributor

You can access the "this.num = 10;" in Calculator 2 from Calculator if you remove the initialize() function completely from Calculator 2.

Not applicable

 

var Calculator2 = Class.create();
Calculator2.prototype = Object.extendsObject(Calculator, {

    initialize: function () {
        Calculator.prototype.initialize.apply(this, arguments);
    },

    div: function (n1, n2) {
        return n1 / n2;
    },

    add: function (n1, n2) {
        return n1 + n2 + 10;
    },

    type: 'Calculator2'
});

Calculator.prototype.initialize.apply(this,arguments);   inside initialize method passes Calculator2 'this' to parent class (Calculator) and returns the same result.